From: Dimitrios Eftaxiopoulos Date: Thu, 22 Mar 2012 19:37:24 +0000 (+0200) Subject: Imported Upstream version 2~rc2+svn376 X-Git-Tag: archive/raspbian/2.5-2+rpi1^2~26^2~33 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=f77239d8178c16a47170512a9db28c0499f9e349;p=mathgl.git Imported Upstream version 2~rc2+svn376 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index b83f692..423ccd8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -218,12 +218,10 @@ endif((enable-all OR enable-qt) AND (NOT enable-lgpl) ) if((enable-langall OR enable-python) AND (NOT enable-lgpl) ) set(MGL_HAVE_PYTHON 1) -# include(FindPythonInterp) -# if(NOT PYTHONLIBS_FOUND) -# if(use_python) -# message(SEND_ERROR "Couldn't find python interpreter.") -# endif(use_python) -# endif(NOT PYTHONINTERP_FOUND) + FIND_PACKAGE(PythonInterp) + if(NOT PYTHONINTERP_FOUND) + message(SEND_ERROR "Couldn't find python interpreter.") + endif(NOT PYTHONINTERP_FOUND) FIND_PACKAGE(PythonLibs) if(NOT PYTHONLIBS_FOUND) message(SEND_ERROR "Couldn't find python development libraries.") diff --git a/NEWS b/NEWS deleted file mode 100644 index 92771aa..0000000 --- a/NEWS +++ /dev/null @@ -1,31 +0,0 @@ -2.0.b Released 23 August 2011 - -1.11.2 Released 30 May 2011 -1.11.1 Released 28 March 2011 -1.11 Released 8 November 2010 -1.10.2.1 Released 27 March 2010 -1.10.2 Released 22 March 2010 -1.10.1 Released 8 March 2010 -1.10 Released 28 December 2009 -1.9 Released 8 July 2009 -1.8.1 Released 4 March 2009 -1.8 Released 27 November 2008 -1.7 Released 5 June 2008 -1.6.2 Released 5 April 2008 -1.6.1 Released 2 April 2008 -1.6 Released 17 March 2008 -1.5 Released 11 January 2008 -1.4.3.1 Released 24 December 2008 -1.4.3 Released 18 December 2008 -1.4.2 Released 27 November 2007 -1.4.1 Released 14 November 2007 -1.4 Released 30 October 2007 -1.3 Released 15 October 2007 -1.2.2 Released 26 September 2007 -1.2.1 Released 14 September 2007 -1.2 Released 10 September 2007 -1.1 Released 23 May 2007 -1.0 Released 2 April 2007 -0.9 Last beta version of the MathGL library. Released 2 March 2007 -0.8.1 Released 19 Febriary 2007 -0.8.0 First public release (24 January 2007) diff --git a/TODO b/TODO deleted file mode 100644 index 608d552..0000000 --- a/TODO +++ /dev/null @@ -1,82 +0,0 @@ - MathGL for v.2.0 - - -1. Colorbar: print more digits for manual arrays ... but avoid overlapping ??? -2. Miss MAJOR labels or decrease its fontsize if labels too close. - Also check that enough digits is printed to distingush the labels - Also allow "time"-labels -- like "%d/%m/%Y %H:%M:%S" - Also allow rotate labels if they too dense -3. Legend in OpenGL mode -4. Add plot Circle() as Error() but with marks instead of error boxes (default 'o') + alpha-transpared if filled -5. Export to LaTeX formats - (pgf/tikz) or metapost if possible (like EPS). -6. Use '~' for old style textual arguments!!! -7. Pipes in mgl2png, mgl2eps, ... (stdin, stdout) -8. Multithreading -9. Number of proc from get_nprocs_conf() (#include ) -10.Arbitrary line/curve coordinates if z=nan -11.Add apperture for light (partially is done) -12.Add diffusive light (no dependence of normale but have direction) -13. утилиты (mgl2png и пр.) вылетают, если в коментариях русские буквы -14. Last ' isn't send as call argument!!! -15. MGL docs -- text what formulas are applicable for scalars too. -16. Manual labels in string with '\n' separator -17. Venn() diagram-like -- transparent circles with manual colors and sizes -- may be a variant of Mark()??? - -11. Update STIX fonts (new release) + create PWT fonts -12. Problem with \calB and so on (\calH, ...) -- they are present only in italic font :(. - -21. INCOMPATIBLE CHANGES!!! swap color and font style in text option ('bR:r' -> 'r:bR') -22. INCOMPATIBLE CHANGES!!! hide 'dir' argument as ':[xyz]' for cont3, dens3, contf3, grid3 + remove conta, densa, grida, contfa -23. INCOMPATIBLE!!! Allow slice definition as real: sl<1 ? sl=int(n*sl) : int(sl); -24. INCOMPATIBLE CHANGES!!! tune colors as {} -- for example, 'b{3}' -25. INCOMPATIBLE CHANGES!!! hide unused arguments (like "size") -26. Quaternary diagrams plotted in a tetrahedron: equivalent to ternary diagrams, but in 3D. -27. Export to X3D -28. Save glyph then it is used for mglGraphPS -- allow different font family in EPS|SVG ??! -29. Multithreading by "subplots" -- for parser first of all !!! - -30. Sample about pthread using. -31. Add help about cmake and GIF/JPEG to the "Installation and using" -32. Regroup pictures in WWW by big classes + combo plots - -========================= - Later - -1. Plot for isolines of vector fields ??? -2. Named arguments in MGL ??? -3. \dfrac for normal size and centering (sample \big\big{\frac{1}{2}}) ??? -4. "Chaos" in area.png (near axis) ??? -5. save data coordinates in picture??? -- NO -- slow + a lot of memory! -6. "Cut off" curves if text is printed along it (for contour labels) ?!? -7. Allow interpolation in MGL if argument is not integer ??? -8. Check if widget functions can be added to mgl_w.h !?! -- use #define ??! -9. Add '[' as separator in string ??? -10. Save id of subplots and axis for getting value of click coordinates arbitrary inplot -- fill only part which is overlapped. Clear it at Clf() + update for any Rotate, Aspect, InPlot, SetRanges, -11. Surface by interpolation for arbitrary points {x,y,z} -- seems to be too complicated :( -12. Rename 'stl'->'style', 'sch'->'scheme' in MGL docs ??? -13. Add option ':[xyzd]' in color scheme for coloring along coordinate (default 'z') ?!? -14. Save ALL plot styles for each curve (0...N) for each subplot (0...M) in format \leg{N_M} ?!? -15. Add TeX command \leg{plot style} for line+mark of specified style. -16. Import/Export via GIF (as 3d data) ??? + 16bit PNG ?!! -17. Contour label should not rotated on ~180 degree ?! -18. The same function for ticks of axis and colorbar ??? -13. Add "colorbar x y ['sch'='' w=1 h=1]" + "colorbar x y dat ['sch'='' w=1 h=1]" -- NO because need w,h ! - - - MathGL (for v.2.?) ??? - -1. GTK window ??? -11. Use Hershey as built-in font ??? - - FAQ - -1. On which things the subplot influence -2. About unrotated text -3. Add "Howto" section in web site. - - Web - -1. "Data plotting", "Data plot", "Scientific visualtization", "Surface", "Cloud", - "Plot", "statistical graphics" -2. Examples of animation -3. Example of inverted axis, minus-log axis diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 54ada73..b9b65cc 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,10 +1,6 @@ -if(use_gsl) -# target_link_libraries(mgl ${GSL_LIB} ${GSL_CBLAS_LIB} ) - add_definitions(-DHAVE_GSL) +if(MGL_HAVE_GSL) include_directories(${GSL_INCLUDE_DIR}) -else(use_gsl) - add_definitions(-DNO_GSL) -endif(use_gsl) +endif(MGL_HAVE_GSL) add_executable(mgl_example wnd_samples.cpp full_test.cpp) target_link_libraries(mgl_example mgl) @@ -13,25 +9,25 @@ install( RUNTIME DESTINATION bin ) -if(use_fltk) +if(MGL_HAVE_FLTK) add_executable(mgl_fltk_example wnd_samples.cpp fltk_example.cpp) target_link_libraries(mgl_fltk_example mgl-wnd) install( TARGETS mgl_fltk_example RUNTIME DESTINATION bin ) -endif(use_fltk) +endif(MGL_HAVE_FLTK) -if(use_glut) +if(MGL_HAVE_GLUT) add_executable(mgl_glut_example wnd_samples.cpp glut_example.cpp) target_link_libraries(mgl_glut_example mgl-glut) install( TARGETS mgl_glut_example RUNTIME DESTINATION bin ) -endif(use_glut) +endif(MGL_HAVE_GLUT) -if(use_wx) +if(MGL_HAVE_WX) include(${wxWidgets_USE_FILE}) add_executable(mgl_wx_example wnd_samples.cpp wx_example.cpp) target_link_libraries(mgl_wx_example ${wxWidgets_LIBRARIES} mgl-wnd) @@ -39,9 +35,9 @@ if(use_wx) TARGETS mgl_wx_example RUNTIME DESTINATION bin ) -endif(use_wx) +endif(MGL_HAVE_WX) -if(use_qt) +if(MGL_HAVE_QT) include(${QT_USE_FILE}) qt_wrap_cpp(mgl_qt_example MGL_MOC_EX_FILES ../include/mgl/qt.h) add_executable(mgl_qt_example wnd_samples.cpp qt_example.cpp ${MGL_MOC_EX_FILES}) @@ -50,4 +46,4 @@ if(use_qt) TARGETS mgl_qt_example RUNTIME DESTINATION bin ) -endif(use_qt) +endif(MGL_HAVE_QT) diff --git a/examples/full_test.cpp b/examples/full_test.cpp index f4cf484..62cb93e 100644 --- a/examples/full_test.cpp +++ b/examples/full_test.cpp @@ -28,7 +28,7 @@ #include "mgl/mgl.h" #include "mgl/eval.h" //#include -#include "mgl/parser.h" +//#include "mgl/parser.h" //----------------------------------------------------------------------------- void mgls_prepare1d(mglData *y, mglData *y1=0, mglData *y2=0, mglData *x1=0, mglData *x2=0); void mgls_prepare2d(mglData *a, mglData *b=0, mglData *v=0); @@ -49,22 +49,10 @@ void smgl_combined(mglGraph *gr); void save(mglGraph *gr,const char *name,const char *suf); void test(mglGraph *gr) { - int i, n=1000; - mglData x(n),y(n),z(n); - for(i=0;iTitle("Dots sample"); - gr->Rotate(50,60); gr->Box(); gr->Dots(x,y,z); - return; - mglParse par; par.AllowSetSize(true); - FILE *fp=fopen("/home/balakin/mgl/att/put.mgl","rt"); + setlocale(LC_CTYPE, ""); + FILE *fp=fopen("/home/balakin/progr/sfnet/mathgl/mathgl-2x/examples/test.mgl","r"); par.Execute(gr,fp,true); fclose(fp); } @@ -702,11 +690,11 @@ void smgl_radar(mglGraph *gr) gr->Radar(yr,"#"); } //----------------------------------------------------------------------------- -const char *mmgl_candle="new y 30 'sin(2*pi*x)^2':copy y1 y/2:copy y2 (y+1)/2\n" +const char *mmgl_candle="new y 30 'sin(pi*x/2)^2':copy y1 y/2:copy y2 (y+1)/2\n" "subplot 1 1 0 '':title 'Candle plot (with grid, \\\'\\#\\\')'\nyrange 0 1:box:candle y y1 y2\n"; void smgl_candle(mglGraph *gr) { - mglData y(30); gr->Fill(y,"sin(2*pi*x)^2"); + mglData y(30); gr->Fill(y,"sin(pi*x/2)^2"); mglData y1(30); gr->Fill(y1,"v/2",y); mglData y2(30); gr->Fill(y2,"(1+v)/2",y); if(!mini) { gr->SubPlot(1,1,0,""); gr->Title("Candle plot (default)"); } @@ -1276,7 +1264,7 @@ void smgl_fit(mglGraph *gr) // nonlinear fitting gr->Puts(mglPoint(-0.9, -1.3), "fitted:", "r:L"); gr->PutsFit(mglPoint(0, -1.8), "y = ", "r"); gr->Puts(mglPoint(0, 2.2), "initial: y = 0.3+sin(2\\pi x)", "b"); - gr->SetRanges(mglPoint(-1,-1,-1),mglPoint(1,1,1)); gr->SetOrigin(0,0,0); +// gr->SetRanges(mglPoint(-1,-1,-1),mglPoint(1,1,1)); gr->SetOrigin(0,0,0); } //----------------------------------------------------------------------------- const char *mmgl_vect="subplot 3 2 0 '':title 'Vect plot (default)':box:vect a b\n" @@ -1355,9 +1343,17 @@ const char *mmgl_cones="new ys 10 3 '0.8*sin(pi*(x+y/4+1.25))+0.2*rnd'" void smgl_cones(mglGraph *gr) { mglData ys(10,3); ys.Modify("0.8*sin(pi*(2*x+y/2))+0.2*rnd"); - if(!mini) gr->Title("Cones plot"); - gr->Rotate(50,60); gr->Light(true); - gr->SetOrigin(0,0,0); gr->Box(); gr->Cones(ys); + gr->Light(true); gr->SetOrigin(0,0,0); + if(!mini) { gr->SubPlot(2,2,0); gr->Title("Cones plot"); } + gr->Rotate(50,60); gr->Box(); gr->Cones(ys); + if(mini) return; + gr->SubPlot(2,2,1); gr->Title("2 colors"); + gr->Rotate(50,60); gr->Box(); gr->Cones(ys,"cbgGyr"); + gr->SubPlot(2,2,2); gr->Title("'#' style"); + gr->Rotate(50,60); gr->Box(); gr->Cones(ys,"#"); + gr->SubPlot(2,2,3); gr->Title("'a' style"); + gr->SetRange('z',-2,2); // increase range since summation can exceed [-1,1] + gr->Rotate(50,60); gr->Box(); gr->Cones(ys,"a"); } //----------------------------------------------------------------------------- const char *mmgl_aspect="subplot 2 2 0:box:text -1 1.1 'Just box' ':L'\ninplot 0.2 0.5 0.7 1:box:text 0 1.2 'InPlot example'\n" diff --git a/fltk.png b/fltk.png deleted file mode 100644 index 3552b27..0000000 Binary files a/fltk.png and /dev/null differ diff --git a/hotdogs.pts b/hotdogs.pts deleted file mode 100644 index db21a89..0000000 --- a/hotdogs.pts +++ /dev/null @@ -1,1748 +0,0 @@ --3.3581 2.5732 1.4934 --3.25778 2.29243 1.45965 --3.0802 2.59925 1.42197 --3.60356 2.40362 1.47383 -5.24516 2.4206 1.30072 -5.42469 2.656 1.27697 -5.12897 2.59593 1.5162 -5.08074 2.17454 1.29715 -5.35839 2.30541 1.03706 -0.314234 -1.24668 0.771201 -0.199285 -1.50489 0.79399 -0.483944 -1.39477 0.994998 -0.524797 -1.06853 0.885649 -0.403729 -0.936904 0.66078 -0.153642 -1.20314 0.54891 --2.62536 -1.39779 -0.911055 --2.35472 -1.36992 -1.01849 --2.54319 -1.64629 -0.821542 --2.84156 -1.45618 -0.730945 --2.83523 -1.16641 -0.829628 --2.56462 -1.11861 -0.996259 -2.87418 -1.98581 -0.595092 -2.84061 -1.79479 -0.820509 -3.02393 -1.75897 -0.534522 -2.91054 -2.09024 -0.323686 -2.72903 -2.24064 -0.612428 -2.65841 -2.10037 -0.856363 -6.31265 3.7305 0.24011 -6.18759 3.47647 0.325652 -6.17274 3.70564 -0.0800137 -6.39293 3.9878 0.0618956 -6.43139 3.86463 0.513914 -3.84975 3.4648 -0.925588 -3.59431 3.38247 -0.854213 -3.7798 3.72419 -0.811975 -4.15893 3.53106 -0.98144 -4.04251 3.24415 -1.01833 -3.74788 3.12439 -0.98844 -2.14197 -3.04583 0.410968 -1.84122 -3.14536 0.550241 -2.04639 -3.17918 0.196293 -2.06812 -2.94437 0.670076 --1.70186 0.504321 0.61956 --1.78475 0.777293 0.610411 --1.84891 0.493439 0.83798 --1.62424 0.245735 0.631356 --1.57339 0.417303 0.359742 --1.66868 0.674163 0.369577 --2.57164 1.21584 -0.743756 --2.31566 1.10419 -0.659823 --2.67611 0.983431 -0.816759 --2.79675 1.43868 -0.754294 --2.50683 1.49307 -0.640831 --2.85831 3.80577 0.187588 --3.03589 3.87076 -0.0420329 --3.02189 4.04633 0.275546 --2.86124 3.90599 0.492198 --2.72507 3.64261 0.458894 --2.74828 3.53887 0.158063 --2.43307 -0.105483 -0.964569 --2.47392 0.184546 -0.924879 --2.16794 -0.0213592 -0.912387 --2.17618 -0.310149 -0.97579 --2.53774 -0.34641 -0.982996 --2.72644 0.0266272 -0.926894 -2.55741 -2.698 0.173276 -2.54559 -2.57237 0.442127 -2.3705 -2.89048 0.304438 -2.72431 -2.41899 0.18726 -1.9329 0.782115 1.33228 -2.07372 0.536763 1.46386 -2.17214 0.8611 1.45373 --2.80681 0.525011 1.2573 --2.61929 0.28831 1.22734 --2.56131 0.690348 1.24508 --2.81006 0.863312 1.29461 --3.07437 0.682266 1.25198 --2.93388 0.253786 1.19793 --4.08497 3.06658 -0.477188 --3.9929 3.34994 -0.508473 --3.80453 3.03208 -0.563298 --4.32072 3.17934 -0.355717 -0.71429 -2.43755 1.13125 -0.577457 -2.64302 0.937117 -0.916566 -2.69839 1.07919 -1.07048 -2.51173 1.22284 -0.932491 -2.24372 1.27808 -0.704217 -2.07408 1.22076 -0.481325 -2.21307 1.06654 -6.77633 5.96032 -0.178714 -6.94684 5.97403 0.117185 -6.85821 5.65343 -0.186667 -6.74866 6.24283 0.0139289 --0.304946 -1.70022 0.0742084 --0.249086 -1.9323 0.145158 --0.175199 -1.63268 0.361055 --0.279403 -1.43671 -0.0334712 --0.301889 -1.66287 -0.225311 --0.26584 -1.92808 -0.226154 -0.270686 -1.89609 -1.12178 -0.42664 -1.58342 -1.20414 -0.507389 -1.87036 -1.30753 -0.28771 -2.24099 -1.08346 -0.0698602 -2.00793 -0.891812 -0.105249 -1.71433 -0.931758 --2.72748 -0.893247 -0.928846 --2.95372 -0.801654 -0.793391 --2.62174 -0.629936 -0.977214 --2.41176 -0.845681 -1.03904 -3.2547 3.60003 1.33696 -3.29474 3.85307 1.22717 -3.09766 3.64218 1.09161 -3.04951 3.38036 1.22149 -3.23911 3.34028 1.44699 -3.45528 3.52774 1.55405 -3.46952 3.81241 1.45288 -2.13552 -2.31356 -1.26343 -2.34225 -2.141 -1.16648 -2.28978 -2.52288 -1.03898 -2.03955 -2.64332 -1.1659 -1.87917 -2.44238 -1.35687 --2.64685 -1.13203 0.96817 --2.55545 -1.40087 0.932776 --2.39014 -1.08724 1.05705 --2.64858 -0.806068 1.04884 --2.84983 -0.905987 0.93024 --2.90094 -1.172 0.793946 -5.46206 6.53047 1.67055 -5.44747 6.32229 1.84814 -5.73482 6.51078 1.7131 -5.46571 6.70016 1.4559 -5.2019 6.49508 1.61418 --2.96176 -0.204601 1.08273 --2.8961 -0.493623 1.03199 --2.63601 -0.263771 1.15631 --2.78725 0.00189162 1.1791 --3.14333 0.0936235 1.08365 --3.24797 -0.110431 0.945928 --3.1717 -0.386754 0.894612 --3.47346 -0.289085 -0.310649 --3.48661 -0.0033554 -0.433021 --3.29665 -0.329489 -0.568534 --3.34481 -0.573148 -0.399182 --3.47098 -0.522645 -0.0868477 --3.58443 -0.227542 -0.00380224 --3.62173 0.00490325 -0.168243 --1.93493 0.792305 0.843012 --1.9404 1.06144 0.740219 --2.14063 0.908349 1.02228 --2.05697 0.575826 1.01327 --1.1033 -0.875587 -0.562918 --1.11228 -0.651707 -0.389252 --0.933491 -0.97847 -0.367397 --1.0533 -1.17043 -0.58353 --1.25204 -1.11933 -0.765217 --1.3032 -0.811943 -0.73879 --1.57893 -0.781166 0.910529 --1.35595 -0.684519 0.716635 --1.53384 -0.481856 0.810603 --1.74273 -0.510285 0.963317 --1.38004 -0.994104 0.826356 -4.7433 5.04488 -0.75171 -4.97556 5.22104 -0.771439 -4.92056 4.82521 -0.848154 -4.65312 4.73047 -0.812904 -4.45911 4.93155 -0.673453 -4.52679 5.19667 -0.599115 -4.75085 5.36744 -0.645883 -1.32843 0.246516 1.03312 -1.28601 -0.0533061 1.12775 -1.55188 0.148591 1.26028 -1.47741 0.5427 1.03714 -1.29585 0.50176 0.830034 -1.1235 0.279323 0.739795 -1.12678 0.0331439 0.925816 --3.41184 -0.662462 0.317813 --3.26844 -0.823944 0.529039 --3.40921 -0.47132 0.541786 --3.52609 -0.401529 0.228077 --3.39951 -0.771987 0.0583163 --3.29761 -0.985696 0.273689 --2.44003 -1.74416 0.77911 --2.40321 -1.93882 0.574524 --2.16401 -1.86492 0.727302 --2.33647 -1.56288 0.932501 --3.19536 -1.22835 -0.271192 --3.29573 -1.04903 -0.0607735 --3.2039 -0.996262 -0.430891 --3.04013 -1.31067 -0.560577 --3.07055 -1.49746 -0.361095 --3.15817 -1.44404 -0.059781 --2.33749 -0.254451 1.15692 --2.08626 -0.459199 1.10064 --2.13336 -0.0834085 1.11195 --2.47607 0.0220306 1.19255 --2.34752 -0.544654 1.13367 --4.06515 1.14606 0.0939439 --3.98855 0.87721 0.208124 --4.10693 1.20843 0.381695 --4.10764 1.40389 -0.0430838 --3.94837 1.06503 -0.169509 --3.74035 0.213102 0.0356933 --3.66615 -0.0230989 0.21915 --3.76119 0.273481 0.35934 --3.84289 0.488681 0.0952445 --3.67135 0.296679 -0.26498 --1.73488 0.824535 -0.0694358 --1.88074 0.984935 -0.269929 --1.81166 1.08 0.0503476 --1.73262 0.898408 0.237072 --1.6277 0.622408 0.0997399 --1.71963 0.630373 -0.25725 --4.44731 2.9857 1.23889 --4.47648 3.31286 1.27093 --4.63912 3.15007 1.045 --4.60983 2.87466 0.943018 --4.39756 2.70469 1.15202 --4.18898 2.86288 1.38837 --4.26454 3.17889 1.42879 --3.1185 2.88722 1.42872 --2.9835 2.29036 1.39026 --2.82421 2.55737 1.28856 --3.62914 0.945485 1.07069 --3.85799 1.03371 0.875528 --3.64957 0.663368 0.923775 --3.34893 0.870816 1.21064 --3.46287 1.17338 1.24476 --3.78027 1.26236 1.07779 --4.10144 1.80983 1.01471 --3.93356 1.92953 1.22535 --4.23873 2.08417 0.996568 --3.87802 1.60653 1.14086 --2.41342 2.76212 0.52291 --2.51387 3.05685 0.485706 --2.51421 2.89601 0.771281 --2.34972 2.47078 0.684162 --2.32 2.51869 0.386456 --2.40892 2.69099 0.171889 --2.49363 2.94328 0.228462 --4.1901 1.67887 0.779085 --4.18138 1.47216 0.555497 --4.01052 1.4394 0.914544 --4.33252 1.98544 0.734667 --4.30575 1.76904 0.476773 --2.14148 2.02084 0.292344 --2.04327 1.74933 0.271785 --2.1878 2.01728 0.0156825 --2.24237 2.27722 0.21845 --2.23397 2.23757 0.523243 --2.1242 1.90144 0.538474 --2.6618 1.7117 1.27036 --2.42223 1.65463 1.12153 --2.57037 1.99444 1.18305 --2.85219 1.92206 1.34625 --2.84725 1.49189 1.34055 --2.55483 1.38925 1.23605 --3.24773 2.89115 -0.563582 --3.13442 3.16171 -0.454071 --2.97275 2.87675 -0.457286 --2.97087 0.910323 -0.830011 --2.8625 0.64601 -0.863657 --3.22997 0.77024 -0.766962 --3.25406 1.08882 -0.760944 --2.94461 1.2067 -0.80286 --3.19264 3.76303 -0.268807 --3.35685 3.98887 -0.189947 --3.09926 3.48731 -0.325277 --3.35013 3.51948 -0.448783 --3.49897 3.80852 -0.379837 --4.13442 2.78485 -0.432249 --4.25185 2.54973 -0.303828 --4.37806 2.88588 -0.257884 --3.85371 2.74253 -0.55972 --3.97769 2.47611 -0.496416 --3.01366 4.06086 0.677485 --3.24816 4.19348 0.803642 --3.00824 3.95263 0.934934 --3.16861 4.19158 0.469881 --3.90096 4.1833 -0.0258327 --4.04109 3.99704 -0.207144 --4.19113 4.15901 0.127059 --3.94038 4.2978 0.268172 --3.6627 4.29 0.171202 --3.68087 4.0663 -0.203356 -1.28305 -0.86711 1.33316 -1.30099 -1.16771 1.37218 -1.57065 -0.909317 1.43042 -1.26322 -0.582139 1.27146 -1.01719 -0.784363 1.17406 -1.04084 -1.07869 1.25768 -4.61406 2.89864 1.84366 -4.57573 2.60027 1.78141 -4.91371 2.83506 1.73841 -4.71687 3.17893 1.88327 -5.72202 6.92474 0.418179 -5.69642 6.94662 0.712281 -5.99169 6.90788 0.535534 -5.89825 6.85722 0.213565 -5.50061 6.84127 0.155097 -5.44399 6.90241 0.40192 -0.581409 -2.87223 -0.92502 -0.728407 -2.72758 -1.16272 -0.861693 -3.02699 -0.941028 -0.738898 -3.13304 -0.678139 -0.378696 -2.85371 -0.713403 -0.399734 -2.57893 -1.02076 -3.53052 -0.877647 -0.465663 -3.51352 -1.0597 -0.221438 -3.36463 -1.08418 -0.576949 -3.37807 -0.814161 -0.768259 -3.5536 -0.61055 -0.671499 -3.6844 -0.728219 -0.274886 -1.66648 -2.62611 -1.34184 -1.48294 -2.32996 -1.49719 -1.84384 -2.83942 -1.12664 -1.47647 -2.85299 -1.22432 -1.33369 -2.63388 -1.37994 -4.50489 1.11766 -0.575304 -4.6655 1.10628 -0.317977 -4.4713 0.844402 -0.419463 -4.28758 0.88656 -0.693971 -4.42024 1.33553 -0.773128 -4.642 1.44308 -0.605366 --1.48623 0.266598 0.170936 --1.49197 0.126599 0.44517 -2.59359 1.53659 -1.07994 -2.52661 1.77098 -0.957494 -2.84365 1.69255 -1.11866 -2.75375 1.31356 -1.19128 -2.46659 1.23055 -1.13156 -2.327 1.45432 -0.98216 --1.07958 -0.561411 -0.0782097 --1.22408 -0.302384 0.00216391 --1.16863 -0.450934 0.22295 --1.02182 -0.682806 0.179951 --0.942777 -0.791918 -0.151739 --1.22775 -0.400658 -0.287671 -1.04695 0.428301 0.327244 -0.971641 0.174597 0.547138 -1.18354 0.549623 0.562124 -1.17307 0.667302 0.263656 -0.98696 0.369718 0.0352485 -0.894835 0.17772 0.283671 -1.26046 -3.38529 -0.241607 -1.16375 -3.37391 0.0781727 -0.961899 -3.33669 -0.253097 -1.31991 -3.31777 -0.563354 -1.58084 -3.35511 -0.331871 -1.50026 -3.38331 -0.00924776 -4.04168 0.775803 1.34296 -3.81296 0.709911 1.45215 -3.82908 0.414927 1.30645 -4.04688 0.393213 1.1022 -4.17992 1.04431 1.38411 -3.93074 1.11424 1.54997 -1.3473 0.802046 0.626675 -1.32412 0.897541 0.381628 -1.46867 0.794179 0.862163 -1.53267 1.08047 0.705362 -3.29336 1.60053 -1.20303 -3.01545 1.48076 -1.2014 -3.09149 1.85641 -1.13924 -3.40073 1.90025 -1.16993 -3.61126 1.59045 -1.18161 -3.33546 1.29132 -1.22525 -5.62358 2.75262 1.0777 -5.77933 2.84311 0.844079 -5.71859 3.03221 1.21844 -5.55879 2.51885 0.898668 -2.47127 2.79266 -0.0777182 -2.42757 2.81723 0.207235 -2.61609 3.03572 -0.0597707 -2.55071 2.7506 -0.316665 -2.33466 2.51481 -0.17884 -2.30551 2.58302 0.0698644 -1.08521 -2.96288 0.91248 -1.36802 -3.05436 0.843495 -1.25744 -2.73844 1.12404 -0.782819 -2.86576 0.886446 -0.844871 -3.09661 0.641085 -1.14979 -3.18763 0.631905 -3.84648 4.33926 1.56949 -3.65213 4.33729 1.37287 -3.73725 4.0621 1.58499 -3.9693 4.1196 1.7283 -4.08582 4.41464 1.72363 -3.99229 4.62724 1.57908 -3.79036 4.58072 1.39268 -5.03437 1.68215 0.891902 -4.84435 1.43156 0.950179 -5.01579 1.49595 0.605661 -5.18484 1.79583 0.665614 -5.14934 1.99853 1.0553 -4.91913 1.76111 1.16106 -2.46454 -2.30791 -0.969099 -2.55173 -2.45591 -0.735053 -3.19021 3.92141 0.982738 -3.0572 3.81201 0.783917 -3.30079 4.16977 0.923489 -3.16722 4.05353 0.673037 -2.7189 -2.40157 -0.393726 -2.70971 -2.48726 -0.121874 -2.5635 -2.65427 -0.444955 -5.45084 2.25177 0.71766 -5.60454 2.46208 0.564752 -4.35675 1.89842 1.64482 -4.62399 2.09368 1.59515 -4.21343 2.113 1.75005 -3.9289 2.02877 1.77861 -4.61179 1.77743 1.45836 -3.14759 2.91117 1.52961 -3.02628 3.1289 1.33969 -2.93803 2.78965 1.40907 -3.08742 2.59319 1.57805 -3.41822 2.89885 1.68978 -3.31105 3.13485 1.575 -1.71171 -3.282 0.327746 -1.48737 -3.21386 0.594408 -1.37689 -3.3338 0.321419 -1.76916 -3.32425 0.0337589 -5.75579 2.71789 0.577461 -5.94258 3.03736 0.615121 -5.92602 3.12933 0.936607 -2.43954 2.2637 -0.607328 -2.5586 2.09251 -0.822849 -2.25817 2.04781 -0.56517 -2.25449 2.26809 -0.342304 -2.44527 2.48975 -0.420863 -2.67582 2.37823 -0.754694 -3.58753 2.45763 -1.10037 -3.37175 2.63871 -1.01289 -3.75839 2.7216 -1.07499 -3.9273 2.45569 -1.11191 -3.75132 2.17725 -1.14135 -3.42295 2.18566 -1.12784 -3.27519 4.26533 0.369612 -3.29396 4.28355 0.645469 -3.41113 4.49746 0.394895 -3.38743 4.36706 0.105512 -3.21926 4.10526 0.129837 -3.12959 4.02135 0.386715 -4.59978 6.05501 1.47473 -4.75672 6.00052 1.68133 -4.75382 6.28774 1.46787 -4.55922 6.20962 1.26715 -4.40091 5.91249 1.27753 -4.49943 5.81285 1.50403 --3.32642 3.74365 1.39215 --3.22072 3.4678 1.43697 --3.10095 3.7764 1.22664 --3.45644 3.98474 1.27466 --3.56871 3.64471 1.5077 -5.08133 4.10986 1.99889 -5.10824 3.79546 1.94206 -5.37527 4.10865 1.95805 -5.18142 4.44088 2.03637 -4.9002 4.37881 2.01722 -4.78193 4.05296 1.99051 -6.68639 5.22605 -0.36527 -6.88973 5.33685 -0.146801 -6.74693 4.93943 -0.17742 -6.50258 4.8874 -0.405334 -6.47977 5.39359 -0.555216 -6.66063 5.6248 -0.410682 -4.32157 5.62849 1.39112 -4.48352 5.55662 1.62522 -4.67681 5.75341 1.71701 -5.41299 2.46472 -0.265353 -5.25421 2.19126 -0.291126 -5.2031 2.46474 -0.540816 -5.3945 2.71948 -0.468382 -5.58851 2.57376 -0.0245429 -5.44063 2.27668 0.0201241 -4.17483 4.76697 -0.580916 -3.987 4.81406 -0.399019 -4.24679 5.02406 -0.497258 -4.38076 4.64899 -0.742947 -4.14359 4.48225 -0.692783 -3.92838 4.54649 -0.515749 -0.575086 -0.319375 0.137793 -0.426735 -0.549375 0.137022 -0.629651 -0.33705 0.411925 -0.747772 -0.0724315 0.27667 -0.664209 -0.167025 -0.0539383 -0.454213 -0.499526 -0.141241 --2.23743 0.183221 1.14406 --2.03553 0.303864 1.03692 --2.35352 2.4442 0.0314378 --2.32934 2.20449 -0.134264 --2.50272 2.48893 -0.211964 --3.37402 4.26158 0.279124 --3.43338 4.30651 0.596241 --1.87524 0.528798 -0.551478 --1.88602 0.762518 -0.433466 --1.73349 0.300054 -0.521238 --1.96498 0.303381 -0.724441 --2.12399 0.560175 -0.730776 --1.34324 -0.0638205 -0.0106493 --1.36259 -0.139144 -0.264176 --1.46066 0.167177 -0.0902646 --1.38353 0.00229609 0.231181 -3.26654 0.0517979 1.45709 -3.57829 0.203283 1.36573 -3.33354 0.35086 1.52647 -3.28727 -0.220293 1.34572 -3.56133 -0.067779 1.24567 --3.61696 0.37237 0.801219 --3.41898 0.600701 1.09081 --4.52311 2.36306 0.419571 --4.459 2.28875 0.715226 --4.61206 2.62362 0.582494 --4.60245 2.65124 0.262696 --4.47308 2.39624 0.101525 --4.41781 2.06891 0.43754 -4.83961 4.17782 -0.936775 -4.53058 4.12255 -0.923979 -4.74213 4.47107 -0.88896 -5.03151 4.46844 -0.906508 -5.14509 4.12191 -0.911607 -4.70785 3.87509 -0.967311 -5.50273 3.5124 1.71626 -5.40921 3.7919 1.8622 -5.18609 3.48348 1.84489 -5.31664 3.20545 1.68799 -5.59982 3.23616 1.50582 -5.7491 3.72678 1.66339 -6.99501 5.09825 1.19778 -7.1119 5.30977 0.944185 -6.98701 5.36939 1.32907 -6.83424 5.32885 1.56402 -6.81141 4.89449 1.39749 -6.92195 4.81256 1.07474 -7.06381 5.01224 0.807921 -5.43954 5.82508 2.07466 -5.73637 5.85909 2.08593 -5.53675 6.09281 1.9949 -5.23955 6.05765 1.94353 -5.16759 5.77041 2.0121 -5.40793 5.54383 2.10897 --2.86183 -0.526187 -0.881125 --2.32645 -0.553547 -1.02275 -2.21361 -2.78034 -0.906335 -1.47907 1.15197 0.434454 -1.36601 1.01447 0.12676 --2.97617 -1.69783 0.27075 --2.89925 -1.62673 0.525337 --3.11257 -1.4446 0.297451 --3.03623 -1.67693 0.00900469 --2.78326 -1.90367 0.225312 -6.25054 6.07188 -0.544069 -6.29252 6.31472 -0.368969 -6.55818 6.0203 -0.373311 -6.43253 5.80054 -0.54681 -6.07033 5.87985 -0.684812 -5.99506 6.26478 -0.527538 --3.63492 0.112787 0.575716 --3.78282 0.486513 0.586754 --3.69946 1.11331 -0.511145 --3.49857 0.892962 -0.632369 --3.77758 0.873102 -0.360233 --3.90739 1.29016 -0.336133 --3.7357 1.45884 -0.540173 --3.4879 1.25244 -0.670554 --2.62358 1.09068 1.27055 --3.09687 1.00106 1.30549 --1.70743 0.0728551 -0.619782 --1.68071 -0.194106 -0.728164 --1.91822 0.0349975 -0.793812 --1.52584 0.124315 -0.337607 --1.51563 -0.0964405 -0.504099 -5.47299 2.93282 1.42801 -5.22021 2.88501 1.60005 -2.5936 -1.6175 1.12672 -2.39091 -1.48471 1.28828 -2.37107 -1.85049 1.1555 -2.64336 -1.8804 0.93882 -2.83566 -1.67922 0.884339 -2.72542 -1.34267 1.17395 -3.24538 -0.925467 0.996022 -3.41791 -0.661114 1.00507 -3.11867 -0.739574 1.21044 --3.33699 -0.810996 -0.24462 -6.24747 4.70483 -0.539291 -5.93087 4.58114 -0.695508 -6.07499 4.91581 -0.685446 --2.95848 -1.72577 -0.267067 --2.86093 -1.65338 -0.558676 --2.74173 -1.88936 -0.362926 --2.82237 -1.9036 -0.0532058 -6.90693 4.77945 0.277344 -6.73574 4.66411 0.0214382 -6.94069 5.04888 0.0572767 -7.06979 5.0969 0.398044 -6.97763 4.80168 0.586328 -6.72735 4.4468 0.294997 --4.18283 1.72571 -0.0951115 --4.29739 1.79113 0.175601 --4.25773 2.02849 -0.121083 --4.06312 1.93244 -0.345216 --4.01319 1.56669 -0.294298 --3.84245 0.768694 0.713488 --3.98523 0.940984 0.515952 --4.6946 3.41935 0.935589 --4.76331 3.19011 0.728442 --3.70859 3.88878 1.3952 --3.88063 3.64395 1.50821 --3.60964 1.45595 1.25828 --3.33752 1.53579 1.36266 --3.64858 1.76612 1.32713 --4.35719 2.36099 1.00197 --4.52455 2.58589 0.867578 --2.65809 3.12868 0.93932 --2.60143 3.23586 0.689814 --2.78144 3.41075 1.01399 --2.83656 3.15778 1.18379 --2.65611 2.85603 1.05981 --4.71472 2.93161 0.357783 --4.70858 2.90754 0.660347 --4.78036 3.21658 0.405898 --4.61173 2.9052 0.0586183 --2.37413 2.26119 0.88467 --2.53193 2.29605 1.08505 --2.3734 1.94616 1.00572 --2.23997 2.05196 0.74335 --2.473 2.62022 0.87297 --3.05776 1.66242 1.38696 --3.18443 1.29657 1.34317 --3.1144 1.99968 1.41874 --3.36284 1.83392 1.40931 --2.93151 3.26702 -0.281744 --2.79929 3.02039 -0.270622 --2.76433 3.32045 -0.0580593 --3.19015 1.40848 -0.764239 --3.4701 1.55582 -0.68822 --4.15944 3.75397 -0.332298 --4.30116 3.96941 -0.058793 --3.80281 3.87197 -0.365872 --4.65055 3.79444 0.387216 --4.58019 3.90963 0.629851 --4.44185 4.0304 0.264238 --4.54924 3.80352 0.0883825 --4.74073 3.52963 0.316487 --4.7667 3.48666 0.599309 --4.67957 3.68312 0.770349 --3.6832 4.34775 0.45773 --3.66027 4.31012 0.800976 --4.16663 4.2224 0.7658 --3.90905 4.23887 0.95564 --3.92208 4.32679 0.622962 --4.16666 4.25078 0.434266 --4.39195 4.11526 0.538737 --4.39364 4.0416 0.857433 --4.1591 4.08814 1.06713 -0.9963 -0.54777 1.07884 -0.798767 -0.552889 0.890631 -0.817338 -0.956563 1.08861 --0.897974 -0.913917 0.179808 --0.986451 -0.986288 0.423002 --0.805115 -1.24111 0.166609 --0.816121 -1.04002 -0.0394137 -0.337806 -0.710791 -0.320536 -0.253942 -0.774728 0.00422765 -0.540335 -0.508611 -0.488465 -0.448634 -0.746107 -0.637475 -0.246884 -0.948563 -0.546828 -0.134343 -0.939422 -0.209397 -1.79182 -0.204334 -1.33122 -1.68044 -0.4419 -1.36272 -1.44567 -0.249134 -1.22029 -1.60329 -0.000688109 -1.20015 -1.86527 0.106519 -1.26752 -2.06888 -0.168414 -1.37421 -1.19518 -0.31502 1.15156 -0.974081 -0.276952 0.929857 -3.20761 0.0327246 -1.19272 -2.96251 -0.17737 -1.26434 -2.93481 0.141685 -1.29712 --1.79135 0.217624 0.857041 --1.89763 0.0174474 0.985016 --1.62781 -0.0164725 0.754094 -1.46163 0.730054 -0.670306 -1.63882 1.02086 -0.649026 -1.6978 0.838746 -0.848748 -1.57397 0.528616 -0.931397 -1.3707 0.473812 -0.77019 -1.26709 0.664551 -0.411118 -1.45798 0.943274 -0.440726 --1.39036 -0.336555 -0.516422 -1.99929 -2.54494 1.05919 -2.27284 -2.39304 0.947648 -2.097 -2.22734 1.1457 -1.80719 -2.34419 1.23004 -1.71359 -2.67017 1.11246 -1.90525 -2.83286 0.910082 -2.19068 -2.68021 0.831294 -6.20235 4.78057 1.87097 -6.3039 4.52233 1.68014 -6.4737 4.88409 1.74998 -6.20783 5.10743 1.98666 -5.92748 4.93304 2.02664 -5.93317 4.60645 1.92894 -4.37438 0.937406 1.1491 -4.42457 1.24506 1.30721 -4.15353 1.35912 1.53929 -5.03429 5.84506 -0.598155 -4.82043 5.91127 -0.445293 -5.10817 6.1067 -0.523355 -5.2629 5.73942 -0.713593 -4.9171 5.59072 -0.638849 -2.22149 1.63674 -0.815198 -2.05914 1.34602 -0.851874 -1.9747 1.55622 -0.621752 -2.10863 1.80549 -0.580732 -2.35931 1.8914 -0.779278 -6.35807 5.10049 -0.575905 -6.12564 5.2591 -0.710731 -5.80907 5.74225 -0.765336 -5.96024 5.50578 -0.767455 -5.50449 5.61488 -0.780989 -5.57882 5.91706 -0.724244 -6.09713 3.55251 1.15161 -6.11286 3.38233 0.836733 -6.292 3.755 1.00323 -5.90052 3.30628 1.2147 -6.95067 6.21531 0.633089 -6.89447 6.22777 0.321251 -6.76468 6.46966 0.642755 -6.90718 6.23708 0.949329 -7.06949 5.94046 0.787405 -7.06007 5.92689 0.443362 -6.08301 3.26753 0.497863 -6.27733 3.60827 0.67259 -2.02755 -2.96523 -0.869759 -1.67022 -3.03059 -1.00326 -2.68833 3.20102 0.680903 -2.75949 3.12449 0.975179 -2.80978 3.39339 0.733275 -2.58434 2.98402 0.739033 -4.42104 6.21925 0.562537 -4.6125 6.44923 0.413904 -4.47513 6.22947 0.310465 -4.32365 6.00536 0.363303 -4.27068 5.97012 0.619123 -4.44879 6.25959 0.811764 -4.58856 6.45642 0.689479 -0.107136 -0.99435 0.159022 --0.0106347 -1.21232 0.309946 -0.248245 -0.957804 0.435146 --0.058333 -1.13786 -0.049878 -4.83131 2.0991 -0.724842 -4.90236 2.39951 -0.773425 -5.07388 2.18804 -0.533646 -4.96941 1.89848 -0.485867 -4.62437 1.96303 -0.833869 -4.60885 2.33426 -0.930307 -2.84663 2.97084 1.22597 -2.89375 3.32192 1.03006 -2.66517 2.87245 1.04304 -2.64159 2.6459 1.1744 -2.80541 2.59759 1.37161 -3.65375 1.79993 1.76306 -3.58772 2.08755 1.78362 -3.3391 1.78086 1.74387 -3.52565 1.52231 1.73333 -3.94732 1.72612 1.71845 -5.52262 2.32271 0.288816 -5.6928 2.62698 0.256876 -5.39341 2.0934 0.462297 -5.30964 1.96214 0.236401 -2.8995 3.14617 -0.448658 -2.71267 3.03107 -0.283407 -2.84308 3.31154 -0.189996 -7.01691 5.6767 0.0975724 -3.4304 4.41893 0.902934 -3.43314 4.52598 0.647929 --2.86137 2.86663 1.27065 --3.05112 3.19167 1.36447 --3.31083 3.13624 1.5009 --3.43484 2.85095 1.5236 -5.4209 6.92367 0.664981 -5.16593 6.85103 0.595611 -2.41874 -2.69942 -0.718325 -2.27546 -2.94078 -0.592459 --2.0369 -1.38819 -1.03681 --2.26334 -1.60707 -0.933447 --2.26556 -1.11954 -1.07572 -2.49148 -1.59898 -1.23192 -2.39095 -1.3633 -1.33635 -2.74193 -1.39493 -1.11909 -2.73321 -1.64696 -1.02613 -2.37726 -1.88255 -1.22685 -2.18817 -1.73092 -1.3686 -3.8192 -0.400994 0.664269 -3.78649 -0.582894 0.436741 -3.95287 -0.325134 0.396717 -3.16898 3.12614 -0.719385 -3.25505 2.90951 -0.872861 -2.96878 2.94109 -0.665912 -3.09038 3.32178 -0.530885 -3.32818 3.38129 -0.700023 -3.44367 3.14194 -0.874567 -4.45667 4.39209 -0.848395 --1.91008 -0.272296 1.02624 --1.67769 -0.222704 0.86507 --2.44932 1.76129 -0.510931 --2.24364 1.60529 -0.391285 --2.7169 1.73209 -0.667163 --2.63854 2.01499 -0.54661 --2.38762 2.00168 -0.344863 --2.81091 3.77364 0.758511 --2.70216 3.50251 0.743846 --2.62764 3.37006 0.420453 --2.64722 0.406292 -0.900401 --2.89253 0.288019 -0.878955 --2.57831 0.708483 -0.850487 --2.36099 0.506001 -0.844763 -0.895645 0.171274 -0.213596 -0.808775 0.071615 0.0141342 -2.95261 0.0533246 1.54838 -2.99107 -0.240328 1.46408 -3.03735 0.338434 1.5919 -2.63866 0.106192 1.58832 -2.6756 -0.192832 1.54374 --3.58223 2.65527 -0.621348 --3.52167 2.96061 -0.590865 --3.71607 2.36708 -0.605868 -0.841079 -3.29945 0.0570917 -0.703276 -3.17306 0.35051 -0.572289 -3.17949 -0.0760034 -1.0237 -3.28325 0.368892 --0.0436037 -2.16221 -0.666844 -0.0329734 -2.47362 -0.567815 --0.143812 -2.21657 -0.374294 --0.173622 -1.93198 -0.50391 -0.135903 -2.33125 -0.866569 -5.36833 6.88996 0.927571 -5.63207 6.91207 0.986224 -5.11699 6.81666 0.884737 -5.22879 6.7857 1.16229 -5.51667 6.82769 1.22651 -0.492167 -2.17619 -1.27108 --3.06244 -0.219382 -0.79153 --3.03797 0.058671 -0.825575 --2.80057 -0.242033 -0.915327 --3.10368 -0.500938 -0.721575 --3.29542 -0.0443823 -0.640957 -3.54889 4.08056 1.40061 -1.89931 1.86609 -0.0710804 -1.84867 1.8375 0.241004 -2.02355 2.08502 -0.0307164 -1.9512 1.79016 -0.346736 -1.76372 1.65781 -0.0281872 --2.77906 -1.43475 0.785394 --3.00396 -1.36739 0.581025 -6.79416 4.48297 0.585706 -6.55862 4.1324 0.324986 -6.5515 4.33336 0.00538146 --3.0134 -0.702942 0.892845 --2.06307 1.41118 0.774104 --1.93006 1.29222 0.559759 --2.06566 1.64776 0.621783 --2.24012 1.49421 0.984831 --2.11375 1.17309 0.935011 -6.70855 6.46824 0.321907 -6.53738 6.66604 0.550523 -5.90359 6.87948 1.05218 -5.80869 6.8038 1.29069 -6.1261 6.7588 1.23687 -5.9791 6.91136 0.797835 -5.67244 4.00024 1.82601 -2.34523 0.0107702 1.56627 -2.05768 -0.0918584 1.51666 -2.36946 -0.289348 1.54743 -2.17102 0.257142 1.52927 --1.8031 -1.60722 0.889516 --2.01207 -1.41379 1.01376 --2.08253 -1.6673 0.895646 --1.87399 -1.85814 0.708345 --1.59652 -1.73724 0.716683 --1.584 -1.43783 0.888191 --3.17749 -0.739618 -0.584753 --3.03525 -1.04684 -0.662182 --2.38331 -0.827782 1.0985 --2.12203 -0.798324 1.09728 --4.20614 1.49573 0.233274 --3.61411 0.633831 -0.48362 --3.39191 0.541088 -0.661285 --3.50872 0.294484 -0.506347 --3.76867 0.554207 -0.223808 --2.2153 1.83113 -0.214637 --2.06518 1.51113 -0.190998 --3.99563 3.17577 1.54105 --3.78575 3.36682 1.57729 --4.12587 3.46106 1.48822 --2.61949 2.56123 1.10863 --2.8799 1.21924 1.33147 --3.70273 2.68702 1.50827 --3.87829 2.34639 1.38825 --2.53738 2.75205 -0.0886397 --2.71644 2.73588 -0.323424 --2.62841 3.0223 -0.0456433 --2.20901 1.75641 0.851081 --2.83704 2.23367 -0.582315 --2.93351 1.95043 -0.682603 --3.10037 2.33017 -0.643582 --2.73793 2.47912 -0.446965 --2.54364 2.25594 -0.38073 --2.35631 0.847093 -0.758055 --3.69009 3.29975 -0.550726 --3.64114 3.57544 -0.501258 --3.39702 3.23965 -0.527561 --4.54791 3.13128 -0.136918 --4.70613 3.22278 0.11291 --4.50048 3.42477 -0.196072 --2.88642 3.69011 1.03273 -2.38341 -2.1121 1.0194 -2.58797 -2.15508 0.800023 --0.00727345 -1.46213 0.536091 -4.57144 6.37544 1.00845 -4.32135 6.02922 0.855065 -4.42716 6.11782 1.08185 -2.39279 -1.02531 -1.37731 -2.28842 -0.736083 -1.41546 -2.66636 -0.877484 -1.2903 -2.65438 -1.17224 -1.24008 -2.12365 -1.16551 -1.44273 -0.947029 -0.0676544 0.751482 -3.54806 0.717383 -1.14804 -3.26958 0.598035 -1.23219 -3.40579 0.990112 -1.21566 -3.72564 1.00003 -1.1139 -3.83236 0.672323 -0.990881 -3.59199 0.426335 -1.07442 --1.12135 -0.718676 0.451641 -1.76789 -2.19618 -1.47054 -1.6378 -1.9417 -1.52956 -2.04021 -2.03279 -1.38621 -4.89006 3.45344 1.90968 -4.80873 3.75814 1.96531 -4.57393 3.50312 1.93919 -5.02 3.13923 1.79711 -1.22207 0.764637 0.0237609 -1.11716 0.562235 -0.119853 -5.49632 5.05005 -0.840496 -5.45755 4.73547 -0.856039 -5.17699 5.03477 -0.842001 -5.36126 5.31798 -0.814108 -5.82673 5.13193 -0.789 -5.75662 4.82527 -0.79249 -4.27014 0.178337 0.280502 -4.14421 -0.0251091 0.0243485 -4.34647 0.31634 0.0786384 -4.32143 0.32691 0.523987 -4.16118 0.1212 0.630855 -4.13256 -0.049425 0.305982 -1.6762 1.06075 0.963286 -1.73561 1.30879 0.859707 -1.65399 0.821687 1.08005 -1.87511 1.03272 1.19798 -2.83629 2.21114 -0.94015 -2.77105 1.94909 -1.01002 -5.02174 3.83418 -0.932701 -4.7044 3.56095 -0.986351 -4.42314 3.69439 -0.982837 -2.56565 3.04872 0.206605 -2.71708 3.26519 0.0829693 -2.03043 -0.8711 -1.45222 -2.08516 -1.46157 -1.43855 -1.8015 -1.08762 -1.48027 -5.0922 5.49635 2.02208 -4.89824 5.31474 1.96835 -5.27685 5.27503 2.08709 -4.89356 5.68995 1.89298 -5.01736 3.52753 -0.920366 -5.3179 3.50334 -0.797628 -5.02054 3.211 -0.885717 -6.49044 5.18705 1.85741 -6.61018 5.45154 1.80496 -6.27207 5.4244 2.01129 -6.72143 5.07267 1.61992 -3.71843 4.98606 0.794463 -3.84339 5.14079 0.946246 -3.83521 5.22737 0.582445 -3.70232 5.00076 0.545876 -3.5726 4.76918 0.644592 -3.70954 4.85213 1.01705 -5.20016 6.80911 0.279993 -4.97813 6.74239 0.422076 -4.91738 6.7294 0.743521 --1.30572 -0.230387 0.328422 --1.26269 -0.493418 0.49699 -4.94289 2.91628 -0.873557 -5.26455 2.91831 -0.677222 -5.07041 2.66266 -0.736423 -4.73056 2.64784 -0.926718 -4.63012 2.98139 -0.995705 -4.18763 2.41065 1.81447 -3.88454 2.33543 1.81838 -4.49948 2.31866 1.72578 -4.27902 2.68544 1.84945 -3.94758 2.66118 1.84511 -2.22773 -3.08715 -0.225525 -2.01225 -3.23091 -0.102127 -2.07452 -3.13061 -0.499213 -2.42395 -2.88864 -0.318726 -2.32791 -3.00243 0.0388688 -2.84437 2.10419 1.55233 -2.83202 2.3593 1.47806 -2.56001 2.11758 1.35314 -2.65597 1.91368 1.4878 -3.02213 1.92534 1.66125 -3.06792 2.30441 1.62743 -4.31478 0.38661 -0.228882 -4.47424 0.617429 -0.131772 -4.20269 0.136258 -0.144758 -4.16407 0.402035 -0.541856 -4.33324 0.612366 -0.446985 -2.63416 2.58818 -0.578693 -2.85448 2.66115 -0.735651 -2.96732 2.44879 -0.91125 -3.55803 4.74165 0.379557 -3.51793 4.60146 0.152682 -4.1725 5.76945 0.401769 -4.1198 5.71311 0.615241 -4.1742 5.77275 0.847412 --4.08181 3.80618 1.3755 -1.0643 0.392978 -0.327417 -1.20075 0.43481 -0.569611 -0.980424 0.158047 -0.490146 -0.162038 -2.61938 0.479033 -0.366356 -2.7069 0.688263 -0.177495 -2.41249 0.69027 -0.351842 -3.0032 -0.272337 -0.692377 -3.22119 -0.344686 -3.54396 -0.97595 0.439956 -3.69933 -0.786986 0.238805 -3.64407 -0.722773 0.600385 -3.37903 -1.04083 0.722992 -3.35584 -1.24202 0.506966 -3.5348 -1.07558 0.157881 -2.39197 2.71538 0.580599 -2.30652 2.50145 0.704393 -2.49901 2.75981 0.838906 -2.29916 2.60419 0.356278 -3.03314 3.48015 -0.329609 -3.0013 3.63469 -0.0882887 -3.19085 3.7252 -0.324681 -3.28809 3.60354 -0.534505 -2.91907 -1.42618 0.976741 -3.10603 -1.46338 0.720405 -3.03567 -1.16423 1.03796 --1.89338 -0.686378 1.0458 --2.98717 2.59789 -0.546802 --2.91852 3.59598 -0.103188 --2.10196 0.802975 -0.627258 --2.07143 1.04115 -0.494572 -3.71608 0.214891 -0.928515 -3.52728 0.0117537 -1.00289 -3.9196 0.432453 -0.841141 -3.79378 -0.0216493 -0.745151 --3.39165 0.28215 0.990615 --3.46821 0.049142 0.804971 --3.17466 0.429606 1.16422 --4.31576 2.31431 -0.156922 --4.08933 2.23466 -0.386964 -0.489774 -3.04492 -0.528126 --0.0491051 -2.47482 -0.284572 --0.106816 -2.38719 -0.00617952 -4.10808 0.133857 -0.393448 -4.00834 -0.200317 -0.168604 -3.966 -0.0939444 -0.434348 -3.96944 0.193297 -0.662922 --1.97006 -1.08846 -1.07646 --2.11733 -0.841206 -1.06313 --1.79887 -0.797267 -1.00332 --1.69038 -1.06764 -1.00967 -3.01407 3.82122 0.51079 -1.70308 -3.02515 0.807143 -1.50625 -2.85997 1.02444 --2.44454 -1.98341 -0.488616 --2.56059 -2.04087 -0.204201 --2.62185 -1.80532 -0.627859 -6.06827 4.3494 -0.555338 -5.99951 4.06054 -0.506586 -5.76495 4.2196 -0.709571 -6.30883 4.42189 -0.38052 -6.3331 4.17427 -0.211343 --2.26998 0.652422 1.13866 --2.39119 0.946479 1.18099 --2.38171 0.417202 1.19089 --1.31138 -0.580318 -0.605914 -4.96424 6.43441 1.52176 -4.93994 6.57882 1.29737 -4.93025 6.20864 1.6971 -2.98566 -1.89651 0.402875 -2.99504 -1.71947 0.629113 -2.80832 -1.98483 0.65407 -2.81584 -2.18673 0.372125 -2.94659 -2.06608 0.132394 -3.11419 -1.77568 0.181057 -3.40603 -0.49194 -0.910627 -3.34842 -0.210649 -1.05994 -3.60165 -0.278384 -0.817812 -3.18387 -0.663541 -1.03314 -5.34814 3.81044 -0.833436 -5.60963 3.60887 -0.649464 -5.49652 4.06618 -0.807599 --2.29419 -1.84626 -0.739208 -4.27438 5.84754 1.07025 --3.89592 0.631513 0.356508 --1.85793 1.23741 0.272008 --2.984 3.48143 1.25566 --4.03153 1.21798 0.708225 --2.74645 2.22476 1.27591 --3.02474 1.65309 -0.747063 --4.41029 3.70975 -0.17619 --4.24984 3.46726 -0.388549 --3.9372 4.02485 1.2545 --3.69259 4.14444 1.14672 --4.52043 3.81682 0.985501 --4.31262 3.86658 1.18948 --4.5472 3.57001 1.13125 -2.44903 -1.19904 1.35848 -2.1307 -1.35446 1.40226 -2.13544 -1.68333 1.31809 -1.42649 -1.36861 -1.50427 -1.49517 -1.09155 -1.46585 -1.78291 -1.39196 -1.50053 -1.57302 -1.63208 -1.53184 -1.26792 -1.69797 -1.54083 -1.14698 -1.30492 -1.44573 -2.55436 -2.74804 -0.0997885 -0.921482 -0.354725 -0.900431 -1.15208 -0.420503 -1.12993 -0.857148 -0.620642 -1.01832 -0.664955 -0.576517 -0.780862 -0.745309 -0.321461 -0.640641 -1.59308 -0.806716 -1.42613 -1.30754 -0.787314 -1.34896 -1.41082 -0.525132 -1.30332 -1.83431 -0.672451 -1.43214 -2.42403 0.251906 -1.33976 -2.32673 0.539772 -1.27671 -2.6952 0.391476 -1.32637 -2.65679 0.0367015 -1.34841 -2.37856 -0.108905 -1.37896 -2.15656 0.129054 -1.33176 --1.18888 -0.91227 0.646598 -0.882412 -0.0881433 -0.609349 -0.770957 -0.0798789 -0.342377 -2.52635 1.48861 1.51161 -2.25694 1.59913 1.30019 -2.37271 1.25519 1.47863 -2.66099 1.21726 1.60642 -2.81597 1.47105 1.63468 -2.79342 1.72577 1.59674 -2.4746 1.72046 1.42371 -4.91798 1.28038 0.273861 -5.0631 1.52727 0.316951 -4.86126 1.27644 0.681867 -4.80274 1.09753 0.442662 -4.75925 1.02914 0.111535 -4.9793 1.45803 -0.000749401 -1.84918 -3.27852 -0.353527 -1.87097 -3.13772 -0.730805 -1.79138 1.54489 -0.338139 -1.81327 1.33966 -0.599624 -3.78526 4.68329 -0.270443 -3.85384 4.92469 -0.140512 -4.05985 5.06709 -0.291874 -2.06778 -1.96345 1.25563 -3.70795 4.43073 -0.38155 -3.62239 4.61083 -0.0906214 -7.05587 5.36537 0.173371 -2.17179 2.35933 0.483175 -2.12679 2.18635 0.686334 -2.15588 2.35987 0.214716 -1.99257 2.04606 0.475675 -1.4513 1.10998 -0.128141 -1.32219 0.866066 -0.210534 -1.52076 1.27825 0.175661 -7.12196 5.61765 0.432257 -7.13462 5.63835 0.79101 -7.13779 5.3273 0.595929 -1.96244 1.88422 0.690245 -2.00865 2.11079 0.237972 -3.22209 2.39594 -1.03568 -3.09851 2.70525 -0.874481 -3.54576 2.88453 -0.996488 -5.97331 4.01783 1.655 -6.23816 4.18383 1.52577 -6.04459 4.34565 1.77096 -6.03504 3.75551 1.43031 -4.85426 1.95583 1.36929 -4.88441 2.27495 1.52269 -2.16662 2.30798 -0.0584886 -2.85463 3.48906 0.0797035 -4.36641 5.55982 -0.261211 -4.30659 5.70868 -0.048627 -4.54324 5.77112 -0.29545 -4.5239 5.46645 -0.465143 -3.56399 4.66754 0.890619 -3.63094 4.58997 1.15028 -1.31461 0.223415 -0.891566 -3.49211 -0.812993 0.779936 -3.20112 -1.23358 0.802344 -4.43517 2.7246 -1.03336 -4.13248 2.67651 -1.0835 -4.29889 3.03756 -1.04986 -4.32493 2.41509 -1.04704 --2.28032 1.36122 -0.539877 --2.07389 1.27868 -0.367909 --1.91479 -0.240171 -0.882894 --1.80039 -0.486833 -0.911414 -3.8584 -0.527549 0.166608 -4.00153 -0.283244 0.10977 -3.8231 -0.563548 -0.0719835 -7.07053 5.59914 1.12616 -6.93117 5.76231 1.38495 -4.4582 0.519046 0.423817 -4.48699 0.548742 0.152924 -4.62911 0.787241 0.227771 -4.04256 -0.111969 0.554354 --3.08706 -0.963685 0.706624 --2.21908 -2.10991 0.280895 --1.87545 -2.0957 0.296578 --2.08609 -2.02663 0.505274 --2.29524 -2.13855 -0.00481676 --2.01344 -2.15349 0.0464491 --3.26443 0.245008 -0.711839 --1.81299 1.01893 0.471673 -2.44308 -2.45355 0.732953 --3.15642 -1.15528 0.477426 --3.22291 -1.24522 0.14199 --2.0714 1.7205 0.0107002 --2.63485 -0.54142 1.10784 --4.00284 2.61531 1.40843 --4.21123 2.49355 1.23522 --3.89522 2.91285 1.5159 --3.73421 2.07515 1.37392 --2.61346 3.22496 0.187374 --2.33161 1.24054 1.11659 --3.20136 2.06015 -0.699392 --3.41658 2.33951 -0.663894 --3.2846 2.61073 -0.62382 --3.92793 3.62917 -0.467471 -0.932763 -1.33349 1.2523 -1.21468 -1.43739 1.3647 -0.697173 -1.20466 1.085 -0.702247 -1.51257 1.17191 -0.984833 -1.65444 1.3132 -4.29148 5.35702 1.52648 -4.48527 5.30227 1.72982 -4.70681 5.48 1.83156 --1.13707 -1.18549 0.635993 --0.940551 -1.26767 0.405044 -3.17393 -0.948401 -0.923305 -2.93503 -0.799032 -1.16505 -3.13595 -0.392096 -1.14549 -3.05366 1.16856 -1.24781 -3.64599 1.29417 -1.16887 -2.19474 1.14273 -1.04246 -1.86283 1.13158 -0.812356 -2.71438 -1.08043 1.29166 -2.46136 -0.881258 1.43992 -2.176 -1.04017 1.45652 -3.57308 1.21911 1.67994 -3.29939 1.06231 1.68362 -3.69656 0.955089 1.58606 -3.84272 1.42387 1.67103 -3.24597 1.37705 1.71614 -3.09243 2.12565 -1.07241 -5.60786 3.32385 -0.547914 -5.85521 3.40983 -0.329565 -5.55673 3.04266 -0.465128 -5.31726 3.20608 -0.728994 -3.51775 4.38546 -0.163124 -3.33964 4.15832 -0.103068 -3.9345 3.83269 1.77134 -4.20448 4.11555 1.84824 -5.80742 3.13501 -0.193377 -5.61141 2.81739 -0.242531 -1.62973 1.20718 -0.446421 -2.34045 -2.75764 0.581962 -2.65502 -2.31421 0.552283 -0.807092 -0.12324 0.548428 -5.62661 4.47492 -0.805358 -5.03009 5.07086 2.03718 -4.77233 4.9352 1.9674 -5.07227 4.76557 2.05017 -5.33643 4.99678 2.08818 -4.1407 5.38491 1.30771 -4.19171 5.62116 1.17016 -3.99973 5.33233 1.08836 -4.03717 5.13834 1.3446 --2.0196 -1.70639 -0.879159 --1.94131 -1.90515 -0.684687 --1.76841 -1.58993 -0.905342 -4.72516 6.44662 1.21841 -4.73792 6.57493 0.915771 -3.68287 4.18187 -0.526314 -3.50624 4.1701 -0.351124 -3.90995 4.2848 -0.642594 -3.70735 3.95738 -0.66932 -2.93633 -1.07939 -1.07913 --3.20956 4.09792 0.063764 --3.50183 4.17958 -0.0142002 -3.91306 -0.155595 0.788118 --4.39097 2.09575 0.146491 -0.184576 -2.77154 -0.463524 -0.0870141 -2.71703 -0.193715 -0.219426 -2.60801 -0.775769 -4.20285 3.82822 1.88007 -4.25872 3.538 1.90751 -4.49702 3.79386 1.94889 --1.57328 -2.03973 -0.222727 --1.7838 -2.02128 -0.456646 --1.49434 -1.90895 -0.46828 --0.957513 -1.3728 -0.447891 --1.20402 -1.4363 -0.67009 -6.83616 6.17327 1.25295 -7.00706 5.93239 1.10711 --3.41004 -0.242093 0.708752 --3.56609 -0.173589 0.451116 --3.90355 0.773166 -0.0564864 -3.3433 -1.3011 -0.351382 -3.25465 -1.53753 -0.15651 -3.19202 -1.43629 -0.547186 -3.41507 -1.27939 -0.0436594 -2.98183 -0.522819 1.37626 -5.9832 3.18839 0.141472 -5.77964 2.88845 0.0259852 --2.13926 -2.01567 -0.53657 --1.9672 -2.11993 -0.265938 --2.25909 -2.10993 -0.274683 --1.79485 -0.94831 1.02389 --1.57427 -1.12795 0.944994 --2.06365 -1.07664 1.07462 --1.80838 -1.26245 1.01602 --3.83176 2.09083 -0.547069 --3.86997 1.74371 -0.481612 --1.94632 1.44485 0.0887583 --1.96622 1.51643 0.384777 --4.32638 3.59105 1.34152 --3.22813 4.02811 1.09674 --4.08072 2.20495 1.22251 --3.46697 2.1126 1.44245 --3.29245 1.78538 -0.723477 --3.63377 1.80859 -0.628613 --3.51612 2.06123 -0.667671 --3.46311 4.20389 0.989019 -1.49452 -0.115509 1.29499 -1.75305 -0.0357478 1.41123 -0.768827 -1.40298 -1.34296 -0.556678 -1.30991 -1.18129 -0.898478 -1.15196 -1.30738 -1.01361 -1.54357 -1.47238 -0.702543 -1.68077 -1.39488 -1.09328 -0.664853 -1.20743 -1.18661 -1.02369 -1.3797 --1.42558 -0.33841 0.641049 -6.05708 6.63049 1.50038 -6.41749 6.64977 1.16437 -6.22387 6.81625 0.942876 -3.09076 1.62294 1.70022 -4.52234 1.67209 -0.815015 -4.28146 1.77505 -0.987945 -4.7855 1.72238 -0.598852 -2.49956 2.93473 0.47466 -2.64666 3.19735 0.414795 -5.36114 4.70226 2.06292 -5.6335 4.97865 2.08567 -5.28675 2.02038 0.791557 -2.77353 3.41595 0.378211 -2.95748 3.57676 0.873368 -2.88726 3.59112 0.567287 -5.71434 5.57136 2.13322 -5.60691 5.27755 2.12246 -3.97017 3.55059 1.82765 -4.10181 3.25591 1.87995 -4.41362 3.24039 1.9119 -4.15012 5.50191 -0.00880473 -4.30526 5.8667 0.152321 -4.4775 5.92667 -0.0920593 --3.48564 3.36832 1.55142 --3.64021 3.07456 1.56285 -1.19266 -0.18378 -1.03496 -1.35133 0.0175528 -1.04411 -0.221046 -1.87146 0.890689 -0.227082 -2.15703 0.861571 -0.450742 -1.91364 1.08247 -0.382439 -1.64119 1.00028 -0.0408999 -1.72004 0.681575 -0.0321474 -2.01193 0.663585 -4.94411 6.68435 1.06579 -2.12227 1.99626 0.902725 -2.2774 2.30864 0.883211 -3.47658 3.86628 -0.539858 -3.53121 3.63415 -0.711546 -0.383882 -2.43701 0.904313 --0.0119596 -2.44544 0.307758 -0.0438695 -2.63832 0.0917509 -0.0047199 -2.24636 0.530223 --0.141071 -2.1755 0.263726 -0.952041 -1.84257 -1.50654 -0.745924 -2.07318 -1.4291 -1.07238 -2.11443 -1.52431 --2.67241 -1.67249 0.712594 --2.69159 -1.85502 0.484789 --1.74437 -2.11499 -0.0390346 --1.59144 -2.04819 0.192405 --3.23048 -0.613651 0.726188 --3.1003 0.484134 -0.812179 --1.73891 -1.97595 0.500675 --2.26099 -1.31324 1.03791 --1.92367 1.23808 -0.129631 --4.64713 3.51719 0.0411152 -1.80291 -2.0016 1.32456 -1.85548 -1.59922 1.39789 -4.70161 5.67007 -0.485873 -4.31853 5.26837 -0.413047 -6.47695 4.35871 1.38263 -6.57226 4.6753 1.52743 -2.04855 -0.472272 -1.41666 -4.00005 0.924923 -0.951886 -2.25363 0.848354 -1.17504 -1.97693 0.94876 -1.00173 -1.63528 -3.25353 -0.648317 -4.19376 0.656773 1.13759 -4.35117 0.605262 0.880451 -4.23031 0.368505 0.823966 -4.49884 0.67108 0.643434 -4.20074 4.22861 -0.813157 -4.19619 5.10754 1.55477 -4.38704 5.0511 1.74036 -3.99278 4.88077 1.4551 -4.18852 4.84039 1.66155 -2.59518 -1.9158 -1.03502 -1.8139 1.71736 0.507648 -1.6818 1.54618 0.289751 -0.336473 -0.750648 0.31608 -5.87675 2.93202 0.325721 -3.67806 2.98568 1.78283 -3.53653 3.25716 1.6805 -3.65639 2.68115 1.79697 -3.98036 2.95554 1.85837 -3.81875 3.25468 1.80484 -2.36931 1.92379 1.26401 -2.15654 1.79216 1.10497 -1.95369 1.69345 0.886935 -2.00576 1.52792 1.08257 -2.0952 2.04456 -0.309954 -4.51107 0.874528 0.904642 -0.610712 -0.311749 -0.307799 --1.74496 -1.33763 -0.997484 --1.45212 -1.25074 -0.889817 -0.661269 -1.04324 -1.11131 -0.634762 -0.824682 -0.948262 -0.918939 -0.88082 -1.20299 -0.372291 -1.21874 -0.975902 -2.58019 -0.607671 -1.35187 -2.87306 -0.523565 -1.25403 -2.34672 -0.40951 -1.40023 -2.67291 -0.281842 -1.3442 --4.46605 2.6595 -0.0750197 -3.64734 -0.497828 0.857082 -3.52848 -0.351629 1.10692 -3.28093 -0.491017 1.22485 --0.213742 -2.13849 -0.0684245 --1.48472 -0.937236 -0.902424 --1.56183 -0.668097 -0.857501 -1.63334 1.38087 0.535899 -1.63206 1.44375 -0.0133946 --2.48138 -2.03242 0.336024 --1.2438 -1.85587 -0.27945 --1.68491 -1.80091 -0.719222 --1.41968 -1.70717 -0.658728 -2.95214 -0.959692 1.21211 -2.75378 -0.766303 1.38522 -4.66517 5.16481 1.88339 -1.87003 -0.939994 1.47548 -1.86338 -1.26014 1.44671 -2.1231 -0.721096 1.50286 -1.82562 -0.617931 1.47843 --1.34774 -1.30235 0.793023 --1.14457 -1.46044 0.574023 --1.45534 -0.113742 0.557684 -1.79229 1.53257 0.740421 -3.43772 0.802948 1.61639 -3.20445 0.640149 1.6245 -3.56751 0.536357 1.5004 -1.59329 0.376284 1.21677 -1.73238 0.635661 1.2334 -5.22833 6.33029 -0.43389 -4.96776 6.38157 -0.23813 -5.1791 6.547 -0.200233 -5.44141 6.49044 -0.364217 -5.51654 6.24094 -0.571262 -2.92746 3.66704 0.275867 -6.34654 6.54281 1.43326 -3.25039 -1.5602 0.11322 -2.85944 -2.23279 -0.0732012 -4.38275 2.07604 -0.991394 -4.09042 2.18951 -1.09581 -5.75814 4.29225 1.89287 -2.74832 2.85199 -0.505114 -3.68766 4.82552 0.0631025 -3.83732 5.08283 0.0925874 -3.69807 4.9538 0.298257 -1.55969 0.266167 -1.0613 -2.91261 0.661908 1.64556 -3.02363 0.943336 1.67299 -2.71551 0.953587 1.63465 -2.60253 0.688273 1.61557 -2.74231 0.398447 1.61799 -6.48291 4.13995 1.12826 -6.70707 4.56524 1.22483 -0.504343 -0.578583 0.460941 -0.0467313 -1.11571 -0.419416 -0.169507 -1.20597 -0.739227 --0.0723879 -1.34365 -0.513731 --0.177271 -1.31162 -0.246719 -4.90379 6.17759 -0.356758 -5.3405 6.02825 -0.644789 -2.78225 1.00994 -1.2548 -3.13091 -1.69876 -0.320607 -4.47499 4.07246 1.94158 -0.412326 -0.980694 -0.828668 -3.34711 3.95865 -0.327486 -3.37465 -1.32531 0.249912 -3.19526 -1.53907 0.43947 --2.2061 0.251646 -0.857804 -0.247761 -2.9145 -0.0117359 -0.455752 -3.07293 0.163174 -0.219303 -2.8124 0.28056 --1.48099 -1.50251 -0.829242 -5.93164 3.68532 -0.40056 -6.05283 3.4355 -0.0316498 -6.79265 5.63829 1.61471 -6.6083 5.84948 1.74583 -5.951 6.69825 -0.100776 -5.75294 6.59186 -0.28301 -5.71199 6.79355 0.0184065 -6.05111 6.49981 -0.316511 --0.999869 -1.56258 0.343525 -2.67989 -0.484584 1.48402 -2.39535 -0.594343 1.50711 -6.29584 6.36949 1.66271 -6.57645 6.28739 1.50741 -6.01081 6.43817 1.73173 -6.13006 6.19322 1.87146 -6.45407 6.10996 1.74697 -0.730679 -0.395163 0.688005 -2.87083 0.71092 -1.29382 -3.12719 0.869261 -1.26455 -3.02126 0.42801 -1.28565 -2.57405 0.67679 -1.28791 -4.12177 0.651651 -0.747676 -0.586553 -2.46589 -1.23518 -1.89981 0.176955 1.44263 -0.555262 -0.703911 0.683419 -3.34187 0.283585 -1.17247 -6.18166 6.82179 0.350148 -6.16875 6.72622 0.0688665 -3.82576 0.111321 1.13027 -5.74637 3.87107 -0.634074 -3.65573 -0.864897 -0.0280244 --2.03556 -0.58493 -1.00781 --0.962678 -1.58874 -0.308596 --1.18427 -1.67338 -0.492639 --0.787314 -1.42904 -0.102052 --1.0209 -1.73883 -0.101643 --1.37145 -1.59448 0.686084 --1.23301 -1.73376 0.442084 -4.84478 2.5234 1.65528 -6.46945 3.96742 0.835967 -6.62786 4.19802 0.655412 -4.71108 3.26124 -0.986653 -1.30906 -1.7287 1.38482 -1.61143 -1.80982 1.38709 -1.54339 -1.48862 1.4185 -1.29118 -2.01526 1.36748 -4.65175 6.3784 0.141357 -4.82002 6.59405 0.263494 -4.85959 6.47672 -0.0217641 -4.69028 6.24067 -0.0947652 -4.4889 6.1068 0.083698 -4.40184 3.33694 -1.02265 --1.56747 0.433475 -0.0436031 --1.63338 0.389874 -0.302603 --0.197666 -1.59359 -0.459092 --0.0779926 -1.7566 -0.692614 -1.4817 -0.365115 1.34121 -5.89633 6.08441 1.98954 -6.27472 5.93005 1.93426 -4.01904 0.114727 0.901652 -3.75072 -0.182644 0.995939 -2.45719 2.54729 0.980497 -0.693332 -0.804017 0.916064 -1.1272 0.176144 -0.715731 -3.00945 -1.5491 -0.759985 -3.18123 -1.20069 -0.769402 -0.0274662 -1.46365 -0.748285 --2.56225 -2.0567 0.0780375 -1.58256 -1.2015 1.43451 -3.05691 -1.88918 -0.116947 -3.98267 2.93008 -1.0623 -4.6792 6.03583 -0.248493 -2.43685 0.363819 1.5864 -3.70348 3.52556 1.71342 -1.83603 0.411313 1.36829 -5.65818 4.66438 2.02439 -3.8853 5.05031 1.16876 -4.65334 0.869003 0.51696 -6.53091 4.59908 -0.233095 -6.75779 6.01931 1.50915 -6.63874 6.43303 1.24419 -3.60485 2.39428 1.79237 -3.33376 2.35303 1.72613 -5.03487 6.65485 0.0779902 -5.29225 6.72323 -0.00264884 -0.682554 -1.77132 1.21017 -5.51032 6.67496 -0.162077 --1.35356 -1.96607 -0.0531971 --1.33195 -1.92089 0.21685 --1.4832 -1.88243 0.477699 -5.73332 6.39403 -0.474629 -2.97807 1.23731 1.6815 -3.50333 4.35091 1.14806 -1.24969 -2.30845 1.31772 -1.48173 -2.51244 1.2417 -1.55307 -2.18502 1.33192 -0.431625 -2.95125 0.442724 -2.07865 -0.396464 1.52085 -4.21847 1.47618 -0.959538 -3.93133 1.58264 -1.1044 -4.21127 1.13045 -0.866204 -3.95771 1.26871 -1.05316 -4.82686 1.23036 -0.0898065 -4.61541 0.865908 -0.120677 -4.78625 1.39445 -0.375139 -4.20963 1.65646 1.62192 -4.45 1.51805 1.43825 -3.9058 5.31517 0.79878 -6.26591 3.9462 1.29562 -6.53298 6.28967 -0.20737 -6.53832 6.5005 0.0566181 -5.2032 1.76706 0.403345 -5.13831 1.71867 0.0509462 -5.12024 1.87673 -0.232021 -5.28893 2.02777 -0.0236116 -2.50009 0.962039 -1.21678 -2.03612 0.676161 -1.14653 -5.75137 6.29458 1.88841 -6.15442 3.93536 -0.286305 --1.09909 -1.78527 0.138912 --0.86237 -1.54507 0.114611 -5.17196 6.2783 1.78999 -4.97714 5.96315 1.8617 -4.0028 5.50798 0.687783 -3.98686 5.46925 0.434364 -3.81488 4.81064 1.26534 -4.50567 4.8653 1.86085 -2.62118 2.36918 1.30126 -4.28542 4.64589 1.78728 -4.33502 4.36976 1.86662 -4.5518 4.60332 1.92335 -4.04779 3.78449 -0.895859 -3.9688 4.04129 -0.780688 -4.29203 3.95453 -0.916237 -6.2876 6.81621 0.640181 -3.68368 3.79203 1.63444 -4.81931 4.65532 2.00249 -1.88246 -1.74879 -1.47807 -4.76888 6.62329 0.57421 -1.12509 -3.16951 -0.84588 -1.90506 1.29572 1.09971 -2.15641 1.36484 1.30612 -4.61852 4.32858 1.96643 -6.7159 6.48222 0.952146 -4.12571 5.62118 0.224686 -3.98719 5.36739 0.167796 -1.34817 -2.00593 -1.55841 -3.05651 3.84653 0.148626 -3.1696 3.89738 -0.0939009 -5.75799 6.68102 1.50991 -1.79773 0.653071 -1.02854 -2.29958 2.10351 1.08738 --0.128184 -1.90268 0.439787 -3.26969 2.06654 1.72671 -5.19114 6.66123 1.38853 -5.91983 5.24911 2.09809 -3.86438 -0.399574 -0.28046 -3.70682 -0.53187 -0.484605 -3.78908 -0.274399 -0.578751 -2.44256 2.32066 1.13015 --1.55262 -0.424198 -0.738876 -6.05052 5.80848 2.05129 -2.07142 0.401857 -1.24737 -4.02043 1.88971 -1.1004 -3.71078 1.88293 -1.16101 -3.84766 5.21151 0.332386 -1.77662 -0.317695 1.45267 -0.989911 -1.94255 1.32892 -2.41566 0.976127 1.54442 -2.33499 0.63801 1.55087 -5.49068 4.38816 1.99693 -4.95415 1.60811 -0.276694 -5.80811 6.08693 -0.657578 -5.8141 3.47802 1.46329 -5.1395 5.46839 -0.750583 -5.67682 5.37944 -0.807399 -3.34488 2.64026 1.69784 -0.23951 -1.48039 -1.0031 -3.39468 4.10375 1.18297 -5.18786 4.71238 -0.881035 -5.34286 4.36839 -0.87583 -6.67348 4.35049 0.962775 -4.7061 1.52652 1.2247 -6.2992 6.54826 -0.12266 -6.5045 6.67914 0.867196 -3.99441 5.21358 -0.0625023 -4.1803 5.3428 -0.213286 -4.06848 5.54374 0.950084 -6.85965 4.62002 0.860343 -6.42626 6.67904 0.269565 -1.00366 -3.2753 -0.567987 -1.60287 1.31145 -0.22993 -6.01536 5.53762 2.09694 -4.62302 1.213 1.0716 -4.68684 1.06266 0.793353 -6.41069 5.6685 1.9289 -1.01531 -2.64462 -1.33261 -1.16134 -2.37991 -1.47818 -1.27247 -2.99597 -1.09768 -1.0272 -2.88095 -1.16509 -0.586194 -2.92571 0.674941 -1.43883 -3.16763 -0.87223 -1.05392 -0.07426 -0.833896 -0.831701 -2.37767 -1.39552 --0.178126 -1.37501 0.202387 -2.10804 1.10872 1.35497 -1.80263 0.372686 -1.15221 -1.54626 -0.628755 1.40473 --0.821186 -1.21034 -0.252178 -6.25101 5.59041 -0.675114 -4.29624 2.96824 1.88425 -2.96901 -1.34288 -0.937122 diff --git a/include/config.h.in b/include/config.h.in index a4f947c..5356bcb 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -1,3 +1,6 @@ +#ifndef _MGL_CONFIG_H_ +#define _MGL_CONFIG_H_ + /* This define enables double precision in MathGL */ #define MGL_USE_DOUBLE ${MGL_USE_DOUBLE} @@ -19,3 +22,5 @@ #define MGL_HAVE_PYTHON ${MGL_HAVE_PYTHON} #define MGL_HAVE_OCTAVE ${MGL_HAVE_OCTAVE} #define MGL_HAVE_DOC ${MGL_HAVE_DOC} + +#endif diff --git a/include/mgl/base.h b/include/mgl/base.h index 2de3364..eb59298 100644 --- a/include/mgl/base.h +++ b/include/mgl/base.h @@ -133,8 +133,13 @@ inline mglPnt operator*(float b, const mglPnt &a) //----------------------------------------------------------------------------- struct mglTexture { - mglColor col[514]; - long n; ///< Number of initial colors along u + mglColor col[514]; ///< Colors itself + long n; ///< Number of initial colors along u + + char Sch[260]; ///< Color scheme used + int Smooth; ///< Type of texture (smoothing and so on) + float Alpha; ///< Transparency + mglTexture() { n=0; } mglTexture(const char *cols, int smooth=0,float alpha=1) { n=0; Set(cols,smooth,alpha); } @@ -328,12 +333,12 @@ public: { const mglPnt &p=Pnt[i]; return mglPoint(p.x,p.y,p.z); } inline float GetClrC(long i) { return Pnt[i].c; } inline long GetPntNum() { return Pnt.size(); } - inline mglPnt GetPnt(long i) { return Pnt[i]; } + inline mglPnt &GetPnt(long i) { return Pnt[i]; } inline mglPrim &GetPrm(long i) { return Prm[i]; } inline long GetPrmNum() { return Prm.size(); } - inline mglText GetPtx(long i) { return Ptx[i]; } + inline mglText &GetPtx(long i) { return Ptx[i]; } inline long GetPtxNum() { return Ptx.size(); } - inline mglTexture GetTxt(long i){ return Txt[i]; } + inline mglTexture &GetTxt(long i){ return Txt[i]; } inline long GetTxtNum() { return Txt.size(); } /// Scale coordinates and cut off some points virtual bool ScalePoint(mglPoint &p, mglPoint &n, bool use_nan=true); @@ -366,7 +371,8 @@ public: virtual float text_plot(long p,const wchar_t *text,const char *fnt,float size=-1,float sh=0,float col=-('k'),bool rot=true)=0; void vect_plot(long p1, long p2, float s=1); inline float mark_size() { return MarkSize*font_factor; } - inline char last_color() { return *last_style; } +// inline char last_color() { return last_style[1]; } + inline const char *last_line() { return last_style; } protected: mglPoint FMin; ///< Actual lower edge after transformation formulas. @@ -436,13 +442,16 @@ private: //----------------------------------------------------------------------------- class mglData; class mglParser; +class mglFormula; typedef mglBase* HMGL; typedef mglData* HMDT; typedef mglParser* HMPR; +typedef mglFormula* HMEX; typedef const mglDataA* HCDT; #else typedef void *HMGL; typedef void *HMDT; +typedef void *HMEX; typedef void *HMPR; typedef const void *HCDT; #endif diff --git a/include/mgl/canvas_cf.h b/include/mgl/canvas_cf.h index b1c01c6..56a2636 100644 --- a/include/mgl/canvas_cf.h +++ b/include/mgl/canvas_cf.h @@ -67,6 +67,12 @@ void mgl_legend_pos(HMGL gr, float x, float y, const char *font, float size, flo void mgl_legend(HMGL gr, int where, const char *font, float size, float llen); void mgl_set_legend_marks(HMGL gr, int num); +HMEX mgl_create_expr(const char *expr); +void mgl_delete_expr(HMEX ex); +mreal mgl_expr_eval(HMEX ex, mreal x, mreal y,mreal z); +mreal mgl_expr_eval_v(HMEX ex, mreal *var); +mreal mgl_expr_diff(HMEX ex, char dir, mreal x, mreal y,mreal z); +mreal mgl_expr_diff_v(HMEX ex, char dir, mreal *var); void mgl_show_image(HMGL gr, const char *viewer, int keep); void mgl_write_frame(HMGL gr, const char *fname,const char *descr); @@ -175,6 +181,10 @@ void mgl_legend_pos_(uintptr_t *gr, float *x, float *y, const char *font, float void mgl_legend_(uintptr_t *gr, int *where, const char *font, float *size, float *llen,int l); void mgl_set_legend_marks_(uintptr_t *gr, int *num); +uintptr_t mgl_create_expr_(const char *expr, int); +void mgl_delete_expr_(uintptr_t *ex); +float mgl_eval_expr_(uintptr_t *ex, float *x, float *y,float *z); +float mgl_diff_expr_(uintptr_t *ex, const char *dir, float *x, float *y,float *z, int); void mgl_show_image_(uintptr_t *graph, const char *viewer, int *keep, int); void mgl_write_frame_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld); @@ -189,7 +199,7 @@ void mgl_write_idtf_(uintptr_t *graph, const char *fname,const char *descr,int l void mgl_write_gif_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld); void mgl_start_gif_(uintptr_t *graph, const char *fname,int *ms,int l); void mgl_close_gif_(uintptr_t *graph); -void mgl_write_obj_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld); +void mgl_write_obj_(uintptr_t *graph, const char *fname,const char *descr, int *use_png,int lf,int ld); void mgl_write_stl_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld); void mgl_write_off_(uintptr_t *graph, const char *fname,const char *descr,int *colored,int lf,int ld); void mgl_write_xyz_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld); @@ -263,7 +273,7 @@ int mgl_fltk_run_(); int mgl_qt_run_(); /*****************************************************************************/ void mgl_wnd_set_delay(HMGL gr, float dt); -void mgl_setup_window(HMGL gr, int autoclf, int showpos, int clf_upd); +void mgl_setup_window(HMGL gr, int clf_upd, int showpos); void mgl_wnd_toggle_alpha(HMGL gr); void mgl_wnd_toggle_light(HMGL gr); void mgl_wnd_toggle_zoom(HMGL gr); @@ -279,7 +289,7 @@ void mgl_get_last_mouse_pos(HMGL gr, float *x, float *y, float *z); /*****************************************************************************/ void mgl_get_last_mouse_pos_(uintptr_t *gr, float *x, float *y, float *z); void mgl_wnd_set_delay_(uintptr_t *gr, float *dt); -void mgl_setup_window_(uintptr_t *gr, int *autoclf, int *showpos, int *clf_upd); +void mgl_setup_window_(uintptr_t *gr, int *clf_upd, int *showpos); void mgl_wnd_toggle_alpha_(uintptr_t *gr); void mgl_wnd_toggle_light_(uintptr_t *gr); void mgl_wnd_toggle_zoom_(uintptr_t *gr); diff --git a/include/mgl/define.h b/include/mgl/define.h index 8892b18..4ce25bc 100644 --- a/include/mgl/define.h +++ b/include/mgl/define.h @@ -167,7 +167,7 @@ enum{ // Codes for warnings/messages // flags for internal use only #define MGL_DISABLE_SCALE 0x000200 ///< Temporary flag for disable scaling (used for axis) #define MGL_FINISHED 0x000400 ///< Flag that final picture (i.e. mglCanvas::G) is ready -#define MGL_AUTO_CLF 0x000800 ///< Clear canvas between drawing +//#define MGL_AUTO_CLF 0x000800 ///< Clear canvas between drawing #define MGL_SHOW_POS 0x001000 ///< Switch to show or not mouse click position #define MGL_CLF_ON_UPD 0x002000 ///< Clear plot before Update() //#define MGL_HIGHLIGHT 0x004000 ///< Highlight plot diff --git a/include/mgl/mgl.h b/include/mgl/mgl.h index 6a39fa0..4f9d536 100644 --- a/include/mgl/mgl.h +++ b/include/mgl/mgl.h @@ -1126,4 +1126,21 @@ public: inline void Stop() { mgl_parser_stop(pr); } }; //----------------------------------------------------------------------------- +/// Wrapper class expression evaluating +class mglExpr +{ + HMEX ex; +public: + mglExpr(const char *expr) { ex = mgl_create_expr(expr); } + ~mglExpr() { mgl_delete_expr(ex); } + inline mreal Eval(mreal x, mreal y=0, mreal z=0) + { return mgl_expr_eval(ex,x,y,z); } + inline mreal Eval(mreal var[26]) + { return mgl_expr_eval_v(ex,var); } + inline mreal Diff(char dir, mreal x, mreal y=0, mreal z=0) + { return mgl_expr_diff(ex,dir, x,y,z); } + inline mreal Diff(char dir, mreal var[26]) + { return mgl_expr_diff_v(ex,dir, var); } +}; +//----------------------------------------------------------------------------- #endif diff --git a/include/mgl/window.h b/include/mgl/window.h index 44b42c1..7bab88d 100644 --- a/include/mgl/window.h +++ b/include/mgl/window.h @@ -27,7 +27,7 @@ /// Make inherited class and redefine Draw() function if you don't want to use function pointers. struct mglDraw { - virtual int Draw(mglGraph *){} ///< Function for drawing + virtual int Draw(mglGraph *)=0; ///< Function for drawing virtual void Reload() {} ///< Function for reloading data #if MGL_HAVE_PTHREAD pthread_t thr; @@ -102,8 +102,8 @@ public: inline void SetDelay(float dt) ///< Delay for animation in seconds { mgl_wnd_set_delay(gr, dt); } - inline void Setup(bool autoclf, bool showpos, bool clf_upd) - { mgl_setup_window(gr, autoclf, showpos, clf_upd); } + inline void Setup(bool clf_upd=true, bool showpos=false) + { mgl_setup_window(gr, clf_upd, showpos); } inline mglPoint LastMousePos() ///< Last mouse position { mglPoint p; mgl_get_last_mouse_pos(gr,&p.x,&p.y,&p.z); return p; } }; @@ -118,15 +118,14 @@ public: void SetSize(int w,int h); void EndFrame(); const unsigned char *GetBits(); - void Clf(mglColor Back=NC); inline int GetNumFig() { return NumFig; } inline int GetCurFig() { return CurFig; } void SetCurFig(int c); void ClearFrames(); inline mglPoint GetMousePos() { return LastMousePos;} // stupid thing to pass G++ bug inline void SetMousePos(mglPoint p) { LastMousePos=p; } - inline void Setup(bool autoclf, bool showpos, bool clf_upd) - { set(autoclf,MGL_AUTO_CLF); set(showpos,MGL_SHOW_POS); set(clf_upd,MGL_CLF_ON_UPD); } + inline void Setup(bool clf_upd=true, bool showpos=false) + { set(showpos,MGL_SHOW_POS); set(clf_upd,MGL_CLF_ON_UPD); } virtual void ToggleAlpha()=0; ///< Switch on/off transparency (do not overwrite user settings) virtual void ToggleLight()=0; ///< Switch on/off lighting (do not overwrite user settings) diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt index a716986..f18f5b6 100644 --- a/lang/CMakeLists.txt +++ b/lang/CMakeLists.txt @@ -1,24 +1,39 @@ if(MGL_HAVE_PYTHON) - INCLUDE(${SWIG_USE_FILE}) - INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH}) - INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) - SET(CMAKE_SWIG_FLAGS "-c++") - SET_SOURCE_FILES_PROPERTIES(mgl.i PROPERTIES CPLUSPLUS ON) -# SET_SOURCE_FILES_PROPERTIES(example.i PROPERTIES SWIG_FLAGS "-includeall") - SWIG_ADD_MODULE(mathgl python mgl.i ../include/mgl/type.h ../include/mgl/data.h ../include/mgl/mgl.h) - SWIG_LINK_LIBRARIES(mathgl ${PYTHON_LIBRARIES}) + configure_file(${MathGL_SOURCE_DIR}/lang/mgl.i ${MathGL_BINARY_DIR}/lang/mgl.i COPYONLY) + configure_file(${MathGL_SOURCE_DIR}/lang/numpy.i ${MathGL_BINARY_DIR}/lang/numpy.i COPYONLY) + SET(dep_libs mgl) + if(MGL_HAVE_FLTK) + get_property(path_to_mglwnd TARGET mgl-wnd PROPERTY LOCATION) + file(TO_NATIVE_PATH ${path_to_mglwnd} MGL_LIB_WND) + SET(dep_libs ${dep_libs} mgl-wnd) + endif(MGL_HAVE_FLTK) + get_property(path_to_mgl TARGET mgl PROPERTY LOCATION) + file(TO_NATIVE_PATH ${path_to_mgl} MGL_LIB) + file(TO_NATIVE_PATH ${MathGL_BINARY_DIR}/lang/mgl.i MGL_I) + file(TO_NATIVE_PATH ${MathGL_SOURCE_DIR}/include SRC_INC) + file(TO_NATIVE_PATH ${MathGL_BINARY_DIR}/include BIN_INC) + configure_file(${MathGL_SOURCE_DIR}/lang/setup.py.in ${MathGL_BINARY_DIR}/lang/setup.py) +# file(COPY ${CMAKE_SOURCE_DIR}/lang/mgl.i ${CMAKE_SOURCE_DIR}/lang/numpy.i DESTINATION ${CMAKE_BINARY_DIR}/lang) +# INCLUDE(${SWIG_USE_FILE}) +# INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH}) +# INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) +# SET(CMAKE_SWIG_FLAGS "-c++") +# SET_SOURCE_FILES_PROPERTIES(mgl.i PROPERTIES CPLUSPLUS ON) +# SWIG_ADD_MODULE(mathgl python mgl.i ../include/mgl/type.h ../include/mgl/data.h ../include/mgl/mgl.h) +# SWIG_LINK_LIBRARIES(mathgl ${PYTHON_LIBRARIES}) -# INSTALL_FILES(/lib/python2.7/dist-packages/ mathgl) # add_custom_command(OUTPUT mgl_python.cpp mathgl.py # COMMAND ${SWIG_EXECUTABLE} -python -c++ -I${CMAKE_SOURCE_DIR}/include -o mgl_python.cpp ${CMAKE_SOURCE_DIR}/lang/mgl.i # MAIN_DEPENDENCY mgl.i # IMPLICIT_DEPENDS CXX ../include/mgl/type.h ../include/mgl/data.h ../include/mgl/mgl.h # ) -# add_custom_target(_mathgl.so ALL -# COMMAND CMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/setup.py build -# DEPENDS ${CMAKE_BINARY_DIR}/lang/mathgl.py ${CMAKE_BINARY_DIR}/lang/mgl_python.cpp -# WORKING_DIRECTORY ${CMAKE_BINARY_DIR} -# ) -# install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/setup.py install --prefix=${CMAKE_INSTALL_PREFIX} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} )") + add_custom_command(OUTPUT _mathgl.so mathgl.py + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_BINARY_DIR}/lang/setup.py build + DEPENDS ${dep_libs} ${CMAKE_BINARY_DIR}/lang/mgl.i ${CMAKE_BINARY_DIR}/lang/numpy.i + IMPLICIT_DEPENDS CXX ${CMAKE_SOURCE_DIR}/include/mgl/type.h ${CMAKE_SOURCE_DIR}/include/mgl/data.h ${CMAKE_SOURCE_DIR}/include/mgl/mgl.h + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lang + ) + add_custom_target(mgl_python_module ALL DEPENDS _mathgl.so mathgl.py) + install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_BINARY_DIR}/lang/setup.py install --prefix=${CMAKE_INSTALL_PREFIX} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lang )") endif(MGL_HAVE_PYTHON) diff --git a/lang/setup.py.in b/lang/setup.py.in new file mode 100644 index 0000000..98a693d --- /dev/null +++ b/lang/setup.py.in @@ -0,0 +1,47 @@ +from distutils.core import setup, Extension +import os + +try: + source_dir="${SRC_INC}" + binary_dir="${BIN_INC}" + mgl_i="${MGL_I}" + mgl_lib="${MGL_LIB}" + mgl_lib_wnd="${MGL_LIB_WND}" +except KeyError: + source_dir="." + binary_dir="." +# mgl_dir="src/.libs/libmgl.so" + +mgl_module = Extension('_mathgl', + sources=[mgl_i], + include_dirs=[binary_dir, source_dir], + swig_opts=[ +# "-outdir %s/lang" % binary_dir, + '-c++', + "-I%s" % binary_dir, + "-I%s" % source_dir], + extra_objects=[mgl_lib,mgl_lib_wnd] + ) + +setup ( + name = "mathgl", + version = "2.0", + maintainer="Dmitry Kulagin", + maintainer_email="dik@ufp.appl.sci-nnov.ru", + author="Alexey Balakin", + author_email= "mathgl.ablakin@gmail.com", + license="Same terms as MathGL", + platforms = ["any"], + url = "http://mathgl.sf.net", + description = "Python interface for MathGL", + long_description = "MathGL is a library for the plotting of the data \ + MathGL is a free library of fast C++ routines for the plotting \ + of the data varied in one or more dimensions. It uses OpenGL \ + (www.opengl.org) for the plotting. Also there is a simple window \ + interface based on GLUT. This provides high compatibility with \ + any operating system (really any which has OpenGL-like libraries). \ + Python interface for MathGL", + package_dir = {"": ""}, + py_modules = ["mathgl"], + ext_modules = [mgl_module] + ) diff --git a/mgllab/main.cpp b/mgllab/main.cpp index 152151a..4adbfb7 100644 --- a/mgllab/main.cpp +++ b/mgllab/main.cpp @@ -261,7 +261,7 @@ int main(int argc, char **argv) pref.get("internal_font",internal_font,0); pref.get("auto_exec",auto_exec,1); #ifdef USE_GETTEXT -// setlocale (LC_ALL, ""); +// setlocale (LC_NUMERIC, ""); // bindtextdomain (PACKAGE, LOCALEDIR); // textdomain (PACKAGE); #endif diff --git a/qt.png b/qt.png deleted file mode 100644 index 0fc0f8e..0000000 Binary files a/qt.png and /dev/null differ diff --git a/sample.csv b/sample.csv deleted file mode 100644 index 506709a..0000000 --- a/sample.csv +++ /dev/null @@ -1,113 +0,0 @@ --0.001 -0.006 32.97 -0.076 -0.074 33.13 -0.067 0.073 32.52 --0.078 0.064 32.72 --0.069 -0.083 33.36 -0.158 -0.149 33.19 -0.212 0.007 32.48 -0.143 0.155 31.93 --0.013 0.209 31.88 --0.16 0.14 32.34 --0.217 -0.016 33.03 --0.146 -0.165 33.64 -0.012 -0.22 33.7 -0.227 -0.217 33.16 -0.304 -0.074 32.48 -0.297 0.087 31.81 -0.211 0.225 31.37 -0.068 0.3 31.23 --0.094 0.294 31.41 --0.23 0.208 31.87 --0.305 0.065 32.51 --0.299 -0.097 33.19 --0.213 -0.235 33.79 --0.069 -0.309 33.97 -0.093 -0.302 33.71 -0.293 -0.285 33.03 -0.378 -0.152 32.37 -0.404 0.005 31.7 -0.37 0.16 31.12 -0.279 0.29 30.69 -0.144 0.374 30.52 --0.011 0.4 30.59 --0.166 0.366 30.87 --0.295 0.276 31.34 --0.379 0.142 31.93 --0.407 -0.015 32.58 --0.372 -0.17 33.22 --0.28 -0.3 33.78 --0.144 -0.385 34.08 -0.012 -0.411 33.96 -0.166 -0.375 33.58 -0.369 -0.372 32.72 -0.463 -0.241 32.06 -0.512 -0.084 31.39 -0.512 0.078 30.74 -0.461 0.233 30.19 -0.365 0.364 29.79 -0.233 0.46 29.57 -0.08 0.509 29.56 --0.083 0.509 29.72 --0.238 0.458 30.08 --0.368 0.363 30.57 --0.465 0.231 31.13 --0.515 0.076 31.76 --0.514 -0.088 32.41 --0.464 -0.243 33.01 --0.366 -0.375 33.53 --0.235 -0.47 33.95 --0.077 -0.519 33.95 -0.085 -0.517 33.69 -0.239 -0.466 33.25 -0.425 -0.449 32.24 -0.525 -0.322 31.65 -0.59 -0.176 30.98 -0.613 -0.017 30.35 -0.596 0.142 29.76 -0.537 0.292 29.25 -0.442 0.421 28.85 -0.317 0.521 28.62 -0.17 0.586 28.53 -0.011 0.61 28.61 --0.147 0.591 28.87 --0.297 0.534 29.25 --0.425 0.439 29.73 --0.525 0.315 30.28 --0.59 0.168 30.86 --0.613 0.008 31.49 --0.597 -0.153 32.08 --0.537 -0.303 32.66 --0.441 -0.432 33.16 --0.316 -0.531 33.56 --0.168 -0.595 33.69 --0.009 -0.617 33.5 -0.151 -0.6 33.16 -0.3 -0.54 32.74 -0.48 -0.539 31.4 -0.588 -0.42 30.82 -0.665 -0.279 30.23 -0.709 -0.124 29.6 -0.717 0.038 28.99 -0.69 0.197 28.41 -0.628 0.345 27.92 -0.534 0.476 27.52 -0.414 0.583 27.25 -0.273 0.66 27.12 -0.119 0.705 27.12 --0.041 0.713 27.28 --0.201 0.687 27.59 --0.349 0.624 28.01 --0.48 0.531 28.48 --0.587 0.412 29 --0.665 0.27 29.57 --0.709 0.116 30.13 --0.718 -0.047 30.7 --0.69 -0.206 31.29 --0.628 -0.356 31.85 --0.533 -0.487 32.4 --0.413 -0.593 32.78 --0.269 -0.671 32.96 --0.114 -0.714 32.79 -0.047 -0.722 32.52 -0.205 -0.694 32.2 -0.353 -0.629 31.83 diff --git a/setup.py b/setup.py deleted file mode 100644 index d1dd005..0000000 --- a/setup.py +++ /dev/null @@ -1,38 +0,0 @@ -from distutils.core import setup, Extension -import os - -try: - source_dir=os.environ["CMAKE_SOURCE_DIR"] - mgl_dir="src/libmgl.so" -except KeyError: - source_dir="." - mgl_dir="src/.libs/libmgl.so" - -mgl_module = Extension('_mathgl', - sources=["lang/mgl_python.cpp"], - include_dirs=["%s/include" % source_dir], - extra_objects=[mgl_dir] - ) - -setup ( - name = "mathgl", - version = "2.0", - maintainer="Dmitry Kulagin", - maintainer_email="dik@ufp.appl.sci-nnov.ru", - author="Alexey Balakin", - author_email= "mathgl.ablakin@gmail.com", - license="Same terms as MathGL", - platforms = ["any"], - url = "http://mathgl.sf.net", - description = "Python interface for MathGL", - long_description = "MathGL is a library for the plotting of the data \ - MathGL is a free library of fast C++ routines for the plotting \ - of the data varied in one or more dimensions. It uses OpenGL \ - (www.opengl.org) for the plotting. Also there is a simple window \ - interface based on GLUT. This provides high compatibility with \ - any operating system (really any which has OpenGL-like libraries). \ - Python interface for MathGL", - package_dir = {"": "lang"}, - py_modules = ["mathgl"], - ext_modules = [mgl_module] - ) diff --git a/src/base.cpp b/src/base.cpp index 006bf06..a6b5e69 100644 --- a/src/base.cpp +++ b/src/base.cpp @@ -212,9 +212,13 @@ void mglBase::RecalcBorder() SetFBord(Min.x+i*(Max.x-Min.x)/n, Min.y+j*(Max.y-Min.y)/n, Min.x); SetFBord(Min.x+i*(Max.x-Min.x)/n, Min.y+j*(Max.y-Min.y)/n, Max.z); } + float d; if(!fx) { FMin.x = Min.x; FMax.x = Max.x; } + else { d=0.01*(FMax.x-FMin.x); FMin.x-=d; FMax.x+=d; } if(!fy) { FMin.y = Min.y; FMax.y = Max.y; } + else { d=0.01*(FMax.y-FMin.y); FMin.y-=d; FMax.y+=d; } if(!fz) { FMin.z = Min.z; FMax.z = Max.z; } + else { d=0.01*(FMax.z-FMin.z); FMin.z-=d; FMax.z+=d; } } RecalcCRange(); } @@ -554,6 +558,8 @@ void mglTexture::Set(const char *s, int smooth, float alpha) { // NOTE: New syntax -- colors are CCCCC or {CNCNCCCN}; options inside [] if(!s || !s[0]) return; + strncpy(Sch,s,259); Smooth=smooth; Alpha=alpha; + register long i,j=0,m=0,l=strlen(s); const char *cols = MGL_COLORS; for(i=0;in-1) // NOTE: never should be here! - { col[2*i] = c[2*n-2];col[2*i+1] = c[2*n-1]; printf("AddTexture -- out of bounds"); } + { col[2*i] = c[2*n-2];col[2*i+1] = c[2*n-1]; /*printf("AddTexture -- out of bounds");*/ } else { col[2*i] = c[2*j]*(1-u)+c[2*j+2]*u; @@ -634,10 +640,10 @@ long mglBase::AddTexture(const char *cols, int smooth) { mglTexture t(cols,smooth); if(t.n==0) return smooth<0 ? 0:1; + if(smooth<0) CurrPal=0; // check if already exist for(unsigned long i=0;iSetDelay(*dt); } void mgl_wnd_set_delay(HMGL gr, mreal dt) { _Gr_->SetDelay(dt); } //----------------------------------------------------------------------------- +HMEX mgl_create_expr(const char *expr) { return new mglFormula(expr); } +void mgl_delete_expr(HMEX ex) { delete ex; } +mreal mgl_expr_eval(HMEX ex, mreal x, mreal y,mreal z) +{ return ex->Calc(x,y,z); } +mreal mgl_expr_eval_v(HMEX ex, mreal *var) +{ return ex->Calc(var); } +mreal mgl_expr_diff(HMEX ex, char dir, mreal x, mreal y,mreal z) +{ return ex->CalcD(dir,x,y,z); } +mreal mgl_expr_diff_v(HMEX ex, char dir, mreal *var) +{ return ex->CalcD(var, dir); } +//----------------------------------------------------------------------------- +uintptr_t mgl_create_expr_(const char *expr, int l) +{ char *s=new char[l+1]; memcpy(s,expr,l); s[l]=0; + uintptr_t res = uintptr_t(mgl_create_expr(s)); + delete []s; return res; } +void mgl_delete_expr_(uintptr_t *ex) { mgl_delete_expr((HMEX)ex); } +float mgl_eval_expr_(uintptr_t *ex, float *x, float *y,float *z) +{ return mgl_expr_eval((HMEX) ex, *x,*y,*z); } +float mgl_diff_expr_(uintptr_t *ex, const char *dir, float *x, float *y,float *z, int) +{ return mgl_expr_diff((HMEX) ex, *dir,*x,*y,*z); } +//----------------------------------------------------------------------------- diff --git a/src/data_new.cpp b/src/data_new.cpp index 1ad1d59..b691a9a 100644 --- a/src/data_new.cpp +++ b/src/data_new.cpp @@ -990,7 +990,7 @@ HMDT mgl_transform(HCDT re, HCDT im, const char *tr) if(tr[1]=='c') { rr.CosFFT("y"); ii.CosFFT("y"); } if(tr[2]=='c') { rr.CosFFT("z"); ii.CosFFT("z"); } } - else if(strchr(tr,'s')) // do Fourier only once for speeding up + else if(strchr(tr,'h')) // do Fourier only once for speeding up { if(tr[0]=='h') { rr.Hankel("x"); ii.Hankel("x"); } if(tr[1]=='h') { rr.Hankel("y"); ii.Hankel("y"); } diff --git a/src/exec.cpp b/src/exec.cpp index 6378301..a80102c 100644 --- a/src/exec.cpp +++ b/src/exec.cpp @@ -37,7 +37,7 @@ int mgls_addlegend(mglGraph *gr, long , mglArg *a, int k[10], const char *) return 0; } void mglc_addlegend(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ if(k[0]==2 && k[1]==2) mglprintf(out,1024,L"gr->AddLegend(\"%s\", \"%s\");",a[0].s.c_str(),a[1].s.c_str()); } +{ if(k[0]==2 && k[1]==2) mglprintf(out,1024,L"gr->AddLegend(\"%ls\", \"%s\");",a[0].w.c_str(),a[1].s.c_str()); } //----------------------------------------------------------------------------- int mgls_addto(mglGraph *, long , mglArg *a, int k[10], const char *) { @@ -2469,17 +2469,29 @@ void mglc_tlabel(wchar_t out[1024], long , mglArg *a, int k[10], const char *) if(k[0]==2) mglprintf(out,1024,L"gr->Label('t', L\"%ls\", %g, %g);", a[0].w.c_str(), k[1]==3?a[1].v:1, k[2]==3?a[2].v:0); } //----------------------------------------------------------------------------- -int mgls_label(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_label(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) { if(k[0]==3 && k[1]==3 && k[2]==2) gr->Label(a[0].v, a[1].v, a[2].w.c_str(), k[3]==2?a[3].s.c_str():""); + else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2) + gr->Label(*(a[0].d), *(a[1].d), *(a[2].d), a[3].w.c_str(), k[4]==2?a[4].s.c_str():"", opt); + else if(k[0]==1 && k[1]==1 && k[2]==2) + gr->Label(*(a[0].d), *(a[1].d), a[2].w.c_str(), k[3]==2?a[3].s.c_str():"", opt); + else if(k[0]==1 && k[1]==2) + gr->Label(*(a[0].d), a[1].w.c_str(), k[2]==2?a[2].s.c_str():"", opt); else return 1; return 0; } -void mglc_label(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +void mglc_label(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) { if(k[0]==3 && k[1]==3 && k[2]==2) - mglprintf(out,1024,L"gr->Label(%g, %g, \"%s\", \"%s\");", a[0].v, a[1].v, a[2].w.c_str(), k[3]==2?a[3].s.c_str():""); + mglprintf(out,1024,L"gr->Label(%g, %g, \"%ls\", \"%s\");", a[0].v, a[1].v, a[2].w.c_str(), k[3]==2?a[3].s.c_str():""); + else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2) + mglprintf(out,1024,L"gr->Label(%s, %s, %s, \"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].w.c_str(), k[4]==2?a[4].s.c_str():"", opt); + else if(k[0]==1 && k[1]==1 && k[2]==2) + mglprintf(out,1024,L"gr->Label(%s, %s, \"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].w.c_str(), k[3]==2?a[3].s.c_str():"", opt); + else if(k[0]==1 && k[1]==2) + mglprintf(out,1024,L"gr->Label(%s, \"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].w.c_str(), k[2]==2?a[2].s.c_str():"", opt); } //----------------------------------------------------------------------------- int mgls_xrange(mglGraph *gr, long , mglArg *a, int k[10], const char *) @@ -3626,7 +3638,7 @@ mglCommand mgls_base_cmd[] = { {"insert","Insert slice of data","insert Dat 'dir' [pos=0 num=1]", mgls_insert, mglc_insert,3}, {"integrate","Integrate data","integrate Dat 'dir'", mgls_integrate, mglc_integrate,3}, {"jacobian","Get Jacobian","jacobian Res Xdat Ydat [Zdat]", mgls_jacobian, mglc_jacobian,4}, - {"label","Draw label at arbitrary position","label x y 'txt' ['fmt' size]", mgls_label, mglc_label,1}, + {"label","Draw label at arbitrary position","label ydat 'txt' ['stl'='']|xdat ydat 'txt' ['stl'='']|xdat ydat zdat 'txt' ['stl'='']|x y 'txt' ['fmt' size]", mgls_label, mglc_label,1}, {"legend","Draw legend","legend [pos 'fmt' size llen]|x y ['fmt' size llen]", mgls_legend, mglc_legend,1}, {"legendmarks","Set number of marks in the legend","legendmarks val", mgls_legendmarks, mglc_legendmarks,2}, {"light","Setup light","light [val] | val num | num xpos ypos zpos ['fmt' br]", mgls_light, mglc_light,2}, diff --git a/src/export.cpp b/src/export.cpp index ab6bd91..cf7262d 100644 --- a/src/export.cpp +++ b/src/export.cpp @@ -474,6 +474,7 @@ void mgl_write_frame(HMGL gr, const char *fname,const char *descr) if(!strcmp(fname+len-4,".gif")) mgl_write_gif(gr,fname,descr); if(!strcmp(fname+len-4,".bmp")) mgl_write_bmp(gr,fname,descr); if(!strcmp(fname+len-4,".tga")) mgl_write_tga(gr,fname,descr); + if(!strcmp(fname+len-5,".mgld"))mgl_export_mgld(gr,fname,descr); } void mgl_write_frame_(uintptr_t *gr, const char *fname,const char *descr,int l,int n) { char *s=new char[l+1]; memcpy(s,fname,l); s[l]=0; diff --git a/src/export_2d.cpp b/src/export_2d.cpp index e761fbd..11e9f98 100644 --- a/src/export_2d.cpp +++ b/src/export_2d.cpp @@ -184,7 +184,7 @@ mglColor mglCanvas::GetColor(const mglPrim &p) void mgl_write_eps(HMGL gr, const char *fname,const char *descr) { if(gr->GetPrmNum()<1) return; - _Gr_->Finish(); + _Gr_->clr(MGL_FINISHED); _Gr_->Finish(false); time_t now; time(&now); bool gz = fname[strlen(fname)-1]=='z'; @@ -362,7 +362,7 @@ void mgl_write_eps_(uintptr_t *gr, const char *fname,const char *descr,int l,int void mgl_write_svg(HMGL gr, const char *fname,const char *descr) { if(gr->GetPrmNum()<1) return; - _Gr_->Finish(); + _Gr_->clr(MGL_FINISHED); _Gr_->Finish(false); time_t now; time(&now); bool gz = fname[strlen(fname)-1]=='z'; @@ -756,7 +756,7 @@ const char *mglColorName(mglColor c) // return closest SVG color void mgl_write_tex(HMGL gr, const char *fname,const char *descr) { if(gr->GetPrmNum()<1) return; - _Gr_->Finish(); + _Gr_->clr(MGL_FINISHED); _Gr_->Finish(false); FILE *fp=fopen("mglcolors.tex","wt"); register int ii,jj,kk; // save colors which can be required at output for(ii=0;ii<6;ii++) for(jj=0;jj<6;jj++) for(kk=0;kk<6;kk++) diff --git a/src/export_3d.cpp b/src/export_3d.cpp index dbf38aa..67623e8 100644 --- a/src/export_3d.cpp +++ b/src/export_3d.cpp @@ -48,29 +48,29 @@ void mglTexture::GetRGBA(unsigned char *f) } } //----------------------------------------------------------------------------- -// I'm not sure that it is good idea -- a lot of memory used, but gain only for small files -/*void mgl_rearrange_pnt(HMGL gr, std::vector &on, std::vector &no, bool coor=false) -{ - // on -- for old-to-new index; no -- for new-to-old index - on.clear(); on.resize(gr->GetPntNum(),-1); no.clear(); - register size_t i,j; - for(i=0;iGetPntNum();i++) // collect data for groups - // it is rather expensive (extra 4b per primitive) but need for export to 3D - { - const mglPnt &q = gr->GetPnt(i); - if(coor) for(j=0;jGetPnt(no[j]); - if(p.x==q.x && p.y==q.y && p.z==q.z) on[i]=j; - } - else for(j=0;jGetPnt(no[j]); - if(p.x==q.x && p.y==q.y && p.z==q.z && p.c==q.c && p.t==q.t) on[i]=j; - } - if(on[j]<0) { no.push_back(i); on[j]=no.size()-1; } - } -}*/ +// I'm not sure that it is good idea -- a lot of memory used, but gain only for small files +/*void mgl_rearrange_pnt(HMGL gr, std::vector &on, std::vector &no, bool coor=false) +{ + // on -- for old-to-new index; no -- for new-to-old index + on.clear(); on.resize(gr->GetPntNum(),-1); no.clear(); + register size_t i,j; + for(i=0;iGetPntNum();i++) // collect data for groups + // it is rather expensive (extra 4b per primitive) but need for export to 3D + { + const mglPnt &q = gr->GetPnt(i); + if(coor) for(j=0;jGetPnt(no[j]); + if(p.x==q.x && p.y==q.y && p.z==q.z) on[i]=j; + } + else for(j=0;jGetPnt(no[j]); + if(p.x==q.x && p.y==q.y && p.z==q.z && p.c==q.c && p.t==q.t) on[i]=j; + } + if(on[j]<0) { no.push_back(i); on[j]=no.size()-1; } + } +}*/ //----------------------------------------------------------------------------- void mgl_obj_prim(const mglPrim &q, const mglPnt &p, FILE *fp, float size) { @@ -231,10 +231,11 @@ void mgl_obj_prim(const mglPrim &q, const mglPnt &p, FILE *fp, float size) case 1: fprintf(fp,"l %ld/%ld %ld/%ld\n", n1,n1, n2,n2); break; case 2: fprintf(fp,"f %ld/%ld/%ld %ld/%ld/%ld %ld/%ld/%ld\n", n1,n1,n1, n2,n2,n2, n3,n3,n3); break; - case 3: fprintf(fp,"f %ld/%ld/%ld %ld/%ld/%ld %ld/%ld/%ld\n", - n1,n1,n1, n2,n2,n2, n3,n3,n3); + case 3: + fprintf(fp,"f %ld/%ld/%ld %ld/%ld/%ld %ld/%ld/%ld\n", + n1,n1,n1, n2,n2,n2, n3,n3,n3); fprintf(fp,"f %ld/%ld/%ld %ld/%ld/%ld %ld/%ld/%ld\n", - n2,n2,n2, n3,n3,n3, n4,n4,n4);break; + n4,n4,n4, n2,n2,n2, n3,n3,n3);break; case 4: break; // TODO: add glyphs export later } } @@ -256,25 +257,25 @@ void mgl_write_obj(HMGL gr, const char *fname,const char *descr, int use_png) } delete []ng; - unsigned len=strlen(fname); + unsigned len=strlen(fname),ntxt=gr->GetTxtNum(); char *tname = new char[len+1]; strcpy(tname,fname); FILE *fp=fopen(fname,"wt"); // vertices definition - fprintf(fp,"# Created by MathGL library\n# Title: %s\n",descr ? descr : fname); - for(i=0;iGetPrmNum());i++) + fprintf(fp,"# Created by MathGL library\n# Title: %s\n",(descr && *descr) ? descr : fname); + for(i=0;iGetPntNum());i++) { mglPnt pp = gr->GetPnt(i); fprintf(fp,"v %g %g %g\n",pp.x,pp.y,pp.z); - fprintf(fp,"vt %g %g\n",256*pp.t,256*pp.c); - if(isnan(pp.u)) fprintf(fp,"vn 0 0 0\n"); - else fprintf(fp,"vn %g %g %g\n",pp.u,pp.v,pp.w); + fprintf(fp,"vt %g %g\n",pp.t,pp.c/ntxt); +// if(isnan(pp.u)) fprintf(fp,"vn 0 0 0\n"); +// else fprintf(fp,"vn %g %g %g\n",pp.u,pp.v,pp.w); } // primitive definition in groups - tname[len-4]=0; fprintf(fp,"# Primitives Definitions\nusemtl %s.mtl\n",tname); - std::vector p; + tname[len-4]=0; fprintf(fp,"# Primitives Definitions\nmtllib %s.mtl\nusemtl %s\n",tname,tname); for(i=0;iGrp.size();i++) { - fprintf(fp,"g %s\n",gr->Grp[i].Lbl.c_str()); p = gr->Grp[i].p; + fprintf(fp,"g %s\n",gr->Grp[i].Lbl.c_str()); + std::vector &p = gr->Grp[i].p; for(j=0;jGetPrm(p[j]); @@ -324,7 +325,7 @@ void mgl_write_stl(HMGL gr, const char *fname,const char *descr) { if(gr->GetPrmNum()<=0) return; // nothing to do FILE *fp = fopen(fname,"wt"); - fprintf(fp,"solid %s",descr?descr:"mathgl"); + fprintf(fp,"solid %s\n",(descr && *descr)?descr:"mathgl"); register long i; mglPnt pp; for(i=0;iGetPrmNum();i++) @@ -362,7 +363,7 @@ void mgl_write_stl(HMGL gr, const char *fname,const char *descr) fprintf(fp,"endloop\nendfacet\n"); } } - fprintf(fp,"endsolid %s",descr?descr:"mathgl"); + fprintf(fp,"endsolid %s",(descr && *descr)?descr:"mathgl"); fclose(fp); } void mgl_write_stl_(uintptr_t *gr, const char *fname,const char *descr,int l,int n) @@ -376,7 +377,7 @@ void mgl_write_xyz(HMGL gr, const char *fname,const char *descr) register long i; FILE *fp=fopen(fname,"wt"), *ff; // vertices definition - fprintf(fp,"# Created by MathGL library\n# Title: %s\n",descr ? descr : fname); + fprintf(fp,"# Created by MathGL library\n# Title: %s\n",(descr && *descr) ? descr : fname); fprintf(fp,"# List of Vertices, with (x,y,z) coordinates.\n"); for(i=0;iGetPntNum();i++) { @@ -390,9 +391,9 @@ void mgl_write_xyz(HMGL gr, const char *fname,const char *descr) char *tname = new char[len+2]; strcpy(tname,fname); tname[len+1]=tname[len]=0; tname[len]='l'; fp = fopen(tname,"wt"); tname[len]='f'; ff = fopen(tname,"wt"); - fprintf(fp,"# Created by MathGL library\n# Title: %s\n",descr ? descr : fname); + fprintf(fp,"# Created by MathGL library\n# Title: %s\n",(descr && *descr) ? descr : fname); fprintf(fp,"# Indices of vertices to connect for lines\n"); - fprintf(ff,"# Created by MathGL library\n# Title: %s\n",descr ? descr : fname); + fprintf(ff,"# Created by MathGL library\n# Title: %s\n",(descr && *descr) ? descr : fname); fprintf(ff,"# Indices of vertices to connect for faces\n"); for(i=0;iGetPrmNum();i++) { @@ -421,9 +422,9 @@ void mgl_write_off(HMGL gr, const char *fname,const char *descr, int colored) FILE *fp=fopen(fname,"wt"); // vertices definition if(colored) - fprintf(fp,"COFF\n# Created by MathGL library\n# Title: %s\n",descr ? descr : fname); + fprintf(fp,"COFF\n# Created by MathGL library\n# Title: %s\n",(descr && *descr) ? descr : fname); else - fprintf(fp,"OFF\n# Created by MathGL library\n# Title: %s\n",descr ? descr : fname); + fprintf(fp,"OFF\n# Created by MathGL library\n# Title: %s\n",(descr && *descr) ? descr : fname); fprintf(fp,"# List of Vertices, with (x,y,z,r,g,b,a) coordinates.\n"); fprintf(fp,"%ld %ld 0\n",gr->GetPntNum(), nf); for(i=0;iGetPntNum();i++) @@ -435,8 +436,8 @@ void mgl_write_off(HMGL gr, const char *fname,const char *descr, int colored) } for(i=0;iGetPrmNum();i++) { - const mglPrim q=gr->GetPrm(i); - mglPnt p1=gr->GetPnt(q.n1), p2, p3, p4; + const mglPrim &q=gr->GetPrm(i); + const mglPnt &p1=gr->GetPnt(q.n1); if(colored) { if(q.type==2) @@ -448,12 +449,12 @@ void mgl_write_off(HMGL gr, const char *fname,const char *descr, int colored) { if(q.type==2) { - p2=gr->GetPnt(q.n2); p3=gr->GetPnt(q.n3); + const mglPnt &p2=gr->GetPnt(q.n2), &p3=gr->GetPnt(q.n3); fprintf(fp,"3 %ld %ld %ld %.2g %.2g %.2g %.2g\n",q.n1,q.n2,q.n3, (p1.r+p2.r+p3.r)/3, (p1.g+p2.g+p3.g)/3, (p1.b+p2.b+p3.b)/3, (p1.a+p2.a+p3.a)/3); } if(q.type==3) { - p2=gr->GetPnt(q.n2); p3=gr->GetPnt(q.n3); p4=gr->GetPnt(q.n4); + const mglPnt &p2=gr->GetPnt(q.n2), &p3=gr->GetPnt(q.n3), &p4=gr->GetPnt(q.n4); fprintf(fp,"4 %ld %ld %ld %ld %.2g %.2g %.2g %.2g\n",q.n1,q.n2,q.n4,q.n3, (p1.r+p2.r+p3.r+p4.r)/4, (p1.g+p2.g+p3.g+p4.g)/4, (p1.b+p2.b+p3.b+p4.b)/4, (p1.a+p2.a+p3.a+p4.a)/4); } } @@ -472,24 +473,43 @@ void mgl_write_idtf_(uintptr_t *gr, const char *fname,const char *descr,int l,in char *f=new char[n+1]; memcpy(f,descr,n); f[n]=0; mgl_write_idtf(_GR_,s,f); delete []s; delete []f; } //----------------------------------------------------------------------------- +/*struct mglPrim +{ + // NOTE: n4 is used as mark; n3 -- as pen style for type=0,1,4 + // NOTE: n3 is used as position of txt,font in Ptxt for type=6 + long n1,n2,n3,n4; ///< coordinates of corners + int type; ///< primitive type (0-point, 1-line, 2-trig, 3-quad, 4-glyph, 6-text) + int id; ///< object id + float z; ///< z-position + float s; ///< size (if applicable) or fscl + float w; ///< width (if applicable) or ftet + float p; +};*/ bool mglCanvas::ExportMGLD(const char *fname, const char *descr) { if(Pnt.size()<1 || Prm.size()<1) return true; FILE *fp=fopen(fname,"wt"); if(!fp) return true; - fprintf(fp,"MGLD %lu %lu\n# %s\n", Pnt.size(), Prm.size(), descr ? descr : fname); - register size_t i; + // NOTE: I'll save Ptx. So prim type=6 is useless,and no LaTeX + fprintf(fp,"MGLD %lu %lu %lu\n# %s\n", Pnt.size(), Prm.size(), Txt.size(), (descr && *descr) ? descr : fname); + register size_t i,j; fprintf(fp,"# Vertexes: x y z c t u v w r g b a\n"); for(i=0;i4) continue; + Prm.push_back(q); + } + mglTexture t; + for(i=0;i' ') k=1; + if(sm==2 && k) break; + } + sscanf(buf,"%d%g", &sm, &a); + t.Set(buf+j, sm, a); + Txt.push_back(t); } delete []buf; fclose(fp); return false; } @@ -706,7 +745,7 @@ void mglCanvas::WriteXGL(const char *fname,const char *descr) if(GetPrmNum()<=0) return; // nothing to do FILE *fp=fopen(fname,"wt"); if(!fp) return true; - fprintf(fp,"\n%s\n", descr?descr:fname); + fprintf(fp,"\n%s\n", (descr && *descr)?descr:fname); fprintf(fp,"%g, %g, %g\n", BDef[0]/255., BDef[1]/255., BDef[2]/255.); fprintf(fp,"\n%g, %g, %g\n",AmbBr, AmbBr, AmbBr); register unsigned long i,j; @@ -774,32 +813,13 @@ void mgl_write_xgl_(uintptr_t *gr, const char *fname,const char *descr,int l,int char *d=new char[n+1]; memcpy(d,descr,n); d[n]=0; mgl_write_xgl(_GR_,s,d); delete []s; delete []d; }*/ //----------------------------------------------------------------------------- -void mgl_x3d_prim(const mglPrim &q, const mglPnt &p, void *fp,bool gz, float size) -{} // TODO -//----------------------------------------------------------------------------- -void mgl_write_x3d(HMGL gr, const char *fname,const char *descr) +void mgl_x3d_mdef(HMGL gr, void *fp, bool gz) { - if(gr->GetPrmNum()<1) return; - time_t now; time(&now); - - bool gz = fname[strlen(fname)-1]=='z'; - void *fp = gz ? (void*)gzopen(fname,"wt") : (void*)fopen(fname,"wt"); - if(!fp) { gr->SetWarn(mglWarnOpen,fname); return; } - mgl_printf(fp, gz, "\n"); - mgl_printf(fp, gz, "\n"); - mgl_printf(fp, gz, "\n\n\n",fname); - mgl_printf(fp, gz, "\n",descr?descr:fname); - mgl_printf(fp, gz, "\n",ctime(&now)); - mgl_printf(fp, gz, "\n"); - mgl_printf(fp, gz, "\n\n"); - - // 1. first we have to define proto for marks and glyphs bool m_p=false,m_x=false,m_d=false,m_v=false,m_t=false, m_s=false,m_a=false,m_o=false,m_T=false, m_V=false,m_S=false,m_D=false,m_Y=false,m_l=false, m_L=false,m_r=false,m_R=false,m_X=false,m_P=false; - register unsigned long i,j; - for(i=0;iGetPrmNum();i++) + for(size_t i=0;iGetPrmNum();i++) { const mglPrim q = gr->GetPrm(i); if(q.type>0) continue; if(q.n4=='+') m_p = true; @@ -817,49 +837,140 @@ void mgl_write_x3d(HMGL gr, const char *fname,const char *descr) if(m_P) { m_p=true; m_s=true; } if(m_X) { m_x=true; m_s=true; } if(m_p) mgl_printf(fp, gz, "\n" - "\n" - "\n\n"); + "\n" + "\n\n"); /*if(m_x) mgl_printf(fp, gz, "/m_x {sm sm rm s2 s2 rl 0 sm 2 mul rm sm 2 mul s2 rl d0} def\n"); // TODO - if(m_s) mgl_printf(fp, gz, "/m_s {sm sm rm 0 s2 rl s2 0 rl 0 sm 2 mul rl cp d0} def\n"); - if(m_d) mgl_printf(fp, gz, "/m_d {sm 0 rm ss ss rl ss sm rl sm sm rl cp d0} def\n"); - if(m_v) mgl_printf(fp, gz, "/m_v {sm ss 2 div rm s2 0 rl sm sm 1.5 mul rl d0 cp} def\n"); - if(m_t) mgl_printf(fp, gz, "/m_t {sm sm 2 div rm s2 0 rl sm ss 1.5 mul rl d0 cp} def\n"); - if(m_a) mgl_printf(fp, gz, "/m_a {sm 0 rm s2 0 rl sm 1.6 mul sm 0.8 mul rm ss 1.2 mul ss 1.6 mul rl 0 sm 1.6 mul rm sm 1.2 mul ss 1.6 mul rl d0} def\n"); - if(m_o) mgl_printf(fp, gz, "/m_o {ss 0 360 d0 arc} def\n"); - if(m_S) mgl_printf(fp, gz, "/m_S {sm sm rm 0 s2 rl s2 0 rl 0 sm 2 mul rl cp} def\n"); - if(m_D) mgl_printf(fp, gz, "/m_D {sm 0 rm ss ss rl ss sm rl sm sm rl cp} def\n"); - if(m_V) mgl_printf(fp, gz, "/m_V {sm ss 2 div rm s2 0 rl sm sm 1.5 mul rl cp} def\n"); - if(m_T) mgl_printf(fp, gz, "/m_T {sm sm 2 div rm s2 0 rl sm ss 1.5 mul rl cp} def\n"); - if(m_Y) mgl_printf(fp, gz, "/m_Y {0 sm rm 0 ss rl sm ss rl s2 0 rm sm sm rl d0} def\n"); - if(m_r) mgl_printf(fp, gz, "/m_r {sm 2 div sm rm 0 s2 rl ss 1.5 mul sm rl d0 cp} def\n"); - if(m_l) mgl_printf(fp, gz, "/m_l {ss 2 div sm rm 0 s2 rl sm 1.5 mul sm rl d0 cp} def\n"); - if(m_R) mgl_printf(fp, gz, "/m_R {sm 2 div sm rm 0 s2 rl ss 1.5 mul sm rl cp} def\n"); - if(m_L) mgl_printf(fp, gz, "/m_L {ss 2 div sm rm 0 s2 rl sm 1.5 mul sm rl cp} def\n"); - if(m_P) mgl_printf(fp, gz, "/m_P {m_p 0 sm rm m_s} def\n"); - if(m_X) mgl_printf(fp, gz, "/m_X {m_x ss sm rm m_s} def\n");*/ + * if(m_s) mgl_printf(fp, gz, "/m_s {sm sm rm 0 s2 rl s2 0 rl 0 sm 2 mul rl cp d0} def\n"); + * if(m_d) mgl_printf(fp, gz, "/m_d {sm 0 rm ss ss rl ss sm rl sm sm rl cp d0} def\n"); + * if(m_v) mgl_printf(fp, gz, "/m_v {sm ss 2 div rm s2 0 rl sm sm 1.5 mul rl d0 cp} def\n"); + * if(m_t) mgl_printf(fp, gz, "/m_t {sm sm 2 div rm s2 0 rl sm ss 1.5 mul rl d0 cp} def\n"); + * if(m_a) mgl_printf(fp, gz, "/m_a {sm 0 rm s2 0 rl sm 1.6 mul sm 0.8 mul rm ss 1.2 mul ss 1.6 mul rl 0 sm 1.6 mul rm sm 1.2 mul ss 1.6 mul rl d0} def\n"); + * if(m_o) mgl_printf(fp, gz, "/m_o {ss 0 360 d0 arc} def\n"); + * if(m_S) mgl_printf(fp, gz, "/m_S {sm sm rm 0 s2 rl s2 0 rl 0 sm 2 mul rl cp} def\n"); + * if(m_D) mgl_printf(fp, gz, "/m_D {sm 0 rm ss ss rl ss sm rl sm sm rl cp} def\n"); + * if(m_V) mgl_printf(fp, gz, "/m_V {sm ss 2 div rm s2 0 rl sm sm 1.5 mul rl cp} def\n"); + * if(m_T) mgl_printf(fp, gz, "/m_T {sm sm 2 div rm s2 0 rl sm ss 1.5 mul rl cp} def\n"); + * if(m_Y) mgl_printf(fp, gz, "/m_Y {0 sm rm 0 ss rl sm ss rl s2 0 rm sm sm rl d0} def\n"); + * if(m_r) mgl_printf(fp, gz, "/m_r {sm 2 div sm rm 0 s2 rl ss 1.5 mul sm rl d0 cp} def\n"); + * if(m_l) mgl_printf(fp, gz, "/m_l {ss 2 div sm rm 0 s2 rl sm 1.5 mul sm rl d0 cp} def\n"); + * if(m_R) mgl_printf(fp, gz, "/m_R {sm 2 div sm rm 0 s2 rl ss 1.5 mul sm rl cp} def\n"); + * if(m_L) mgl_printf(fp, gz, "/m_L {ss 2 div sm rm 0 s2 rl sm 1.5 mul sm rl cp} def\n"); + * if(m_P) mgl_printf(fp, gz, "/m_P {m_p 0 sm rm m_s} def\n"); + * if(m_X) mgl_printf(fp, gz, "/m_X {m_x ss sm rm m_s} def\n");*/ // if(m_C) mgl_printf(fp, gz, "/m_C {m_c m_o} def\n"); mgl_printf(fp, gz, "\n"); +} +//----------------------------------------------------------------------------- +void mgl_x3d_prim(const mglPrim &q, const mglPnt &p, const long *pnt, void *fp,bool gz, float size) +{ +/* if(q.type==0) // mark + { + float x0 = p1.x,y0 = p1.y; + sprintf(str,"1 lw %.2g %.2g %.2g rgb ", cp.r,cp.g,cp.b); + wp=1; + if(q.s!=gr->mark_size()/gr->FontFactor()) + { + mgl_printf(fp, gz, "/ss {%g} def\n",q.s*0.4*gr->FontFactor()); + mgl_printf(fp, gz, "/s2 {%g} def\n",q.s*0.8*gr->FontFactor()); + mgl_printf(fp, gz, "/sm {-%g} def\n",q.s*0.4*gr->FontFactor()); + } + switch(q.n4) + { + case '+': mgl_printf(fp, gz, "np %g %g mt m_p %sdr\n",x0,y0,str); break; + case 'x': mgl_printf(fp, gz, "np %g %g mt m_x %sdr\n",x0,y0,str); break; + case 's': mgl_printf(fp, gz, "np %g %g mt m_s %sdr\n",x0,y0,str); break; + case 'd': mgl_printf(fp, gz, "np %g %g mt m_d %sdr\n",x0,y0,str); break; + case '*': mgl_printf(fp, gz, "np %g %g mt m_a %sdr\n",x0,y0,str); break; + case 'v': mgl_printf(fp, gz, "np %g %g mt m_v %sdr\n",x0,y0,str); break; + case '^': mgl_printf(fp, gz, "np %g %g mt m_t %sdr\n",x0,y0,str); break; + case 'S': mgl_printf(fp, gz, "np %g %g mt m_S %sfill\n",x0,y0,str); break; + case 'D': mgl_printf(fp, gz, "np %g %g mt m_D %sfill\n",x0,y0,str); break; + case 'V': mgl_printf(fp, gz, "np %g %g mt m_V %sfill\n",x0,y0,str); break; + case 'T': mgl_printf(fp, gz, "np %g %g mt m_T %sfill\n",x0,y0,str); break; + case 'o': mgl_printf(fp, gz, "%g %g m_o %sdr\n",x0,y0,str);break; + case 'O': mgl_printf(fp, gz, "%g %g m_o %sfill\n",x0,y0,str);break; + case 'Y': mgl_printf(fp, gz, "np %g %g mt m_Y %sdr\n",x0,y0,str); break; + case '<': mgl_printf(fp, gz, "np %g %g mt m_l %sdr\n",x0,y0,str); break; + case '>': mgl_printf(fp, gz, "np %g %g mt m_r %sdr\n",x0,y0,str); break; + case 'L': mgl_printf(fp, gz, "np %g %g mt m_L %sfill\n",x0,y0,str); break; + case 'R': mgl_printf(fp, gz, "np %g %g mt m_R %sfill\n",x0,y0,str); break; + case 'P': mgl_printf(fp, gz, "np %g %g mt m_P %sdr\n",x0,y0,str); break; + case 'X': mgl_printf(fp, gz, "np %g %g mt m_X %sdr\n",x0,y0,str); break; + case 'C': mgl_printf(fp, gz, "%g %g m_o %g %g m_c %sdr\n",x0,y0,x0,y0,str); break; + default: mgl_printf(fp, gz, "%g %g m_c %sfill\n",x0,y0,str); + } + if(q.s!=gr->mark_size()/gr->FontFactor()) + { + mgl_printf(fp, gz, "/ss {%g} def\n",0.4*gr->mark_size()); + mgl_printf(fp, gz, "/s2 {%g} def\n",0.8*gr->mark_size()); + mgl_printf(fp, gz, "/sm {-%g} def\n",0.4*gr->mark_size()); + } + } + else if(q.type==3) // quad + { + const mglPnt p2=gr->GetPnt(q.n2), p3=gr->GetPnt(q.n3), p4=gr->GetPnt(q.n4); + mgl_printf(fp, gz, "np %g %g mt %g %g ll %g %g ll %g %g ll cp %sfill\n", + p1.x, p1.y, p2.x, p2.y, p4.x, p4.y, p3.x, p3.y, str); + } + else if(q.type==2) // trig + { + const mglPnt p2=gr->GetPnt(q.n2), p3=gr->GetPnt(q.n3); + mgl_printf(fp, gz, "np %g %g mt %g %g ll %g %g ll cp %sfill\n", + p1.x, p1.y, p2.x, p2.y, p3.x, p3.y, str); + } + else if(q.type==1) // line + { + sprintf(str,"%.2g lw %.2g %.2g %.2g rgb ", q.w>1 ? q.w:1., cp.r,cp.g,cp.b); + wp = q.w>1 ? q.w:1; st = q.n3; + put_line(gr,fp,gz,i,wp,cp,st, "np %g %g mt ", "%g %g ll ", false, 1); + const char *sd = mgl_get_dash(q.n3,q.w); + if(sd && sd[0]) mgl_printf(fp, gz, "%s [%s] %g sd dr\n",str,sd,q.w*q.s); + else mgl_printf(fp, gz, "%s d0 dr\n",str); + } + else if(q.type==4) // glyph + { + float ss = q.s/2, xx = p1.u, yy = p1.v, zz = p1.w; + mgl_printf(fp, gz, "gsave\t%g %g translate %g %g scale %g rotate %s\n", + p1.x, p1.y, ss, ss, -q.w, str); + if(q.n3&8) // this is "line" + { + float dy = 0.004,f=fabs(zz); + mgl_printf(fp, gz, "np %g %g mt %g %g ll %g %g ll %g %g ll cp ", + xx,yy+dy, xx+f,yy+dy, xx+f,yy-dy, xx,yy-dy); + } + else + mgl_printf(fp, gz, "%.3g %.3g translate %g %g scale %c%c_%04x ", + xx, yy, zz, zz, q.n3&1?'b':'n', q.n3&2?'i':'n', q.n4); + if(q.n3&4) mgl_printf(fp, gz, "dr"); + else mgl_printf(fp, gz, "eofill"); + mgl_printf(fp, gz, " grestore\n"); + }*/ +} +//----------------------------------------------------------------------------- +void mgl_write_x3d(HMGL gr, const char *fname,const char *descr) +{ + if(gr->GetPrmNum()<1) return; + time_t now; time(&now); - // 2 define coordinates, colors and so on - mgl_printf(fp, gz, ""); - mgl_printf(fp, gz, ""); -/* mgl_printf(fp, gz, "");*/ + bool gz = fname[strlen(fname)-1]=='z'; + void *fp = gz ? (void*)gzopen(fname,"wt") : (void*)fopen(fname,"wt"); + if(!fp) { gr->SetWarn(mglWarnOpen,fname); return; } + mgl_printf(fp, gz, "\n"); + mgl_printf(fp, gz, "\n"); + mgl_printf(fp, gz, "\n\n\n",fname); + mgl_printf(fp, gz, "\n",(descr && *descr)?descr:fname); + mgl_printf(fp, gz, "\n",ctime(&now)); + mgl_printf(fp, gz, "\n"); + mgl_printf(fp, gz, "\n\n"); - // now should be defined textures ... but since X3D support RGBA then omit this in this version + // 1. first we have to define proto for marks and glyphs + mgl_x3d_mdef(gr, fp, gz); + + // here should be defined textures ... but since X3D support RGBA then omit it in this version - // 3. now find group for primitives + // 2. now find group for primitives long m1=0,m2=0,m; + register unsigned long i,j; for(i=0;iGrp.size();i++) // prepare array of indirect indexing { m = gr->Grp[i].Id; if(mm2) m2=m; } long *ng = new long[m2-m1+1]; @@ -873,27 +984,43 @@ void mgl_write_x3d(HMGL gr, const char *fname,const char *descr) delete []ng; // primitive definition in groups - std::vector p; + long npnt = gr->GetPntNum(), k; + long *pnt=new long[npnt]; mglPrim q; for(i=0;iGrp.size();i++) { - mgl_printf(fp,gz,"\n",gr->Grp[i].Lbl.c_str()); p = gr->Grp[i].p; + mgl_printf(fp,gz,"\n",gr->Grp[i].Lbl.c_str()); + std::vector &p = gr->Grp[i].p; + + // define coordinates, colors and so on + memset(pnt,-1,npnt*sizeof(long)); + for(j=0,k=0;jGetPrm(p[j]); + if(q.n1>=0 && pnt[q.n1]<0) { pnt[q.n1]=k; k++; } + if(q.type>0 && q.type<4 && q.n2>=0 && pnt[q.n2]<0) { pnt[q.n2]=k; k++; } + if(q.type>1 && q.type<4 && q.n3>=0 && pnt[q.n3]<0) { pnt[q.n3]=k; k++; } + if(q.type==3 && q.n4>=0 && pnt[q.n4]<0) { pnt[q.n4]=k; k++; } + } + + mgl_printf(fp, gz, ""); + mgl_printf(fp, gz, ""); + // no normals since mathgl ones are "signless" -- x3d should calculate it by itself + for(j=0;jGetPrm(p[j]); // TODO: collect by type (quads,trig,line) and draw together??? - mgl_x3d_prim(q, gr->GetPnt(q.n1), fp,gz, q.s*gr->FontFactor()); + const mglPrim &q=gr->GetPrm(p[j]); // TODO: collect by type (quads,trig,line) and draw together??? + mgl_x3d_prim(q, gr->GetPnt(q.n1), pnt, fp,gz, q.s*gr->FontFactor()); } mgl_printf(fp,gz,"\n",gr->Grp[i].Lbl.c_str()); gr->Grp[i].p.clear(); // we don't need indexes anymore } - // try to save "ungrouped" primitives - mgl_printf(fp,gz,"\n"); - for(i=0;iGetPrmNum();i++) - { - const mglPrim q=gr->GetPrm(p[j]); m = q.id-m1; - if(m<0 || m>=m2-m1+1) - mgl_x3d_prim(q, gr->GetPnt(q.n1), fp,gz, q.s*gr->FontFactor()); - } mgl_printf(fp, gz, "\n"); if(gz) gzclose((gzFile)fp); else fclose((FILE *)fp); } diff --git a/src/pixel.cpp b/src/pixel.cpp index bec03c6..3156d71 100644 --- a/src/pixel.cpp +++ b/src/pixel.cpp @@ -373,6 +373,7 @@ void mglCanvas::ClfZB() register long i,n=Width*Height; memset(C,0,12*n); memset(OI,0,n*sizeof(int)); for(i=0;i<3*n;i++) Z[i] = -1e20f; // TODO: Parallelization ?!? + clr(MGL_FINISHED); } //----------------------------------------------------------------------------- void mglCanvas::Clf(mglColor Back) @@ -383,7 +384,7 @@ void mglCanvas::Clf(mglColor Back) if(Back==0) Back = 'w'; if((Flag&3)==2) Back = 'k'; BDef[0]=Back.r*255; BDef[1]=Back.g*255;BDef[2]=Back.b*255; BDef[3]=0; - ClfZB(); clr(MGL_FINISHED); + ClfZB(); } //----------------------------------------------------------------------------- void mglCanvas::pxl_other(unsigned long id, unsigned long n, const void *p) diff --git a/src/plot.cpp b/src/plot.cpp index bfd469d..e9cae29 100644 --- a/src/plot.cpp +++ b/src/plot.cpp @@ -1323,7 +1323,10 @@ void face_plot(mglBase *gr, mglPoint o, mglPoint d1, mglPoint d2, float c, bool long *id=new long[n*n]; gr->Reserve(n*n); for(j=0;jAddPnt(p,c,nn); } + { p = o+d1*i+d2*j; id[i+n*j] = gr->AddPnt(p,c,nn); + if(id[i+n*j]<0) + { printf("q"); gr->AddPnt(p,c,nn); } + } for(i=0;iStop) { delete []id; return; } @@ -1358,7 +1361,7 @@ void mgl_chart(HMGL gr, HCDT a, const char *cols, const char *opt) if(a->Minimal()<0) { gr->SetWarn(mglWarnNeg,"Chart"); return; } gr->SaveState(opt); static int cgid=1; gr->StartGroup("Chart",cgid++); - bool wire = cols && !strcmp(cols,"#"); // draw edges + bool wire = cols && strchr(cols,'#'); // draw edges register long n=a->GetNx(),i,j=0; if(cols) for(i=0;iReserve(4); long k1,k2,k3,k4; - k1 = gr->AddPnt(p1,c1,q1,-1,3); k2 = gr->AddPnt(p2,c2,q2,-1,3); - k3 = gr->AddPnt(p3,c3,q3,-1,3); k4 = gr->AddPnt(p4,c4,q4,-1,3); + double a = gr->get(MGL_ENABLE_ALPHA)?-1:1; + k1 = gr->AddPnt(p1,c1,q1,a,11); k2 = gr->AddPnt(p2,c2,q2,a,11); + k3 = gr->AddPnt(p3,c3,q3,a,11); k4 = gr->AddPnt(p4,c4,q4,a,11); gr->quad_plot(k1,k2,k3,k4); if(strchr(stl,'#')) { @@ -206,27 +207,37 @@ void mgl_cone(HMGL gr, float x1, float y1, float z1, float x2, float y2, float z float c1=gr->GetC(ss,p1.z), c2=gr->GetC(ss,p2.z); long *kk=new long[164],k1=-1,k2=-1; bool edge = stl && strchr(stl,'@'); + bool wire = stl && strchr(stl,'#'); gr->Reserve(edge?166:82); - if(edge) + if(edge && !wire) { k1=gr->AddPnt(p1,c1,d,-1,3); k2=gr->AddPnt(p2,c2,d,-1,3); } float f,si,co, dr=r2-r1; register long i; - for(i=0;i<41;i++) + for(i=0;i<(wire?13:41);i++) { if(gr->Stop) { delete []kk; return; } - f = i*M_PI/20; co = cos(f); si = sin(f); + f = i*M_PI/(wire?6:20); co = cos(f); si = sin(f); p = p1+(r1*co)*a+(r1*si)*b; q = (si*a-co*b)^(d + (dr*co)*a + (dr*si)*b); + if(wire) q.x=q.y=NAN; kk[i] = gr->AddPnt(p,c1,q,-1,3); - if(edge) kk[i+82] = gr->AddPnt(p,c1,d,-1,3); + if(edge && !wire) kk[i+82] = gr->AddPnt(p,c1,d,-1,3); p = p2+(r2*co)*a+(r2*si)*b; - kk[i+41] = gr->AddPnt(p,c2,q,-1,3); - if(edge) kk[i+123] = gr->AddPnt(p,c2,d,-1,3); + kk[i+(wire?13:41)] = gr->AddPnt(p,c2,q,-1,3); + if(edge && !wire) kk[i+123] = gr->AddPnt(p,c2,d,-1,3); } - for(i=0;i<40;i++) + if(wire) for(i=0;i<12;i++) + { + if(gr->Stop) { delete []kk; return; } + gr->line_plot(kk[i],kk[i+1]); + gr->line_plot(kk[i],kk[i+13]); + gr->line_plot(kk[i+14],kk[i+1]); + gr->line_plot(kk[i+14],kk[i+13]); + } + else for(i=0;i<40;i++) { if(gr->Stop) { delete []kk; return; } gr->quad_plot(kk[i],kk[i+1],kk[i+41],kk[i+42]); @@ -256,19 +267,24 @@ void mgl_cones_xyz(HMGL gr, HCDT x, HCDT y, HCDT z, const char *pen, const char static int cgid=1; gr->StartGroup("Cones",cgid++); m = x->GetNy() > y->GetNy() ? x->GetNy() : y->GetNy(); m = z->GetNy() > m ? z->GetNy() : m; - bool above = pen && strchr(pen,'a'); + bool above= pen && strchr(pen,'a'); + bool wire = pen && strchr(pen,'#'); float *dd=new float[2*n], x1,z0,zz,d; memset(dd,0,n*sizeof(float)); gr->SetPenPal(pen,&pal); - char cols[4]={'@',0,0.0}; + char c1[7]; memset(c1,0,7); c1[0] ='@'; + char c2[7]; memset(c2,0,7); c2[0] ='@'; + if(wire) c1[5]=c2[5]='#'; memset(dd,0,2*n*sizeof(float)); z0 = gr->GetOrgZ('x'); for(i=0;iv(i, jGetNy() ? j:0); for(j=0;jNextColor(pal); cols[1]=gr->last_color(); - if(gr->GetNumPal(pal)==2*m) { gr->NextColor(pal); cols[2]=gr->last_color(); } + gr->NextColor(pal); memcpy(c1+1,gr->last_line(),4); + if(gr->GetNumPal(pal)==2*m) + { gr->NextColor(pal); memcpy(c2+1,gr->last_line(),4); } + else memcpy(c2,c1,7); mx = jGetNy() ? j:0; my = jGetNy() ? j:0; mz = jGetNy() ? j:0; for(i=0;i0?dd[i+n]:z0; dd[i+n] += z->v(i,mz); mgl_cone(gr, x1,y->v(i,0),zz, x1,y->v(i,0),dd[i+n], 0.7*gr->BarWidth*d*(dd[i]-zz)/(dd[i]-z0), - 0.7*gr->BarWidth*d*(dd[i]-dd[i+n])/(dd[i]-z0), cols); + 0.7*gr->BarWidth*d*(dd[i]-dd[i+n])/(dd[i]-z0), c1); } - else mgl_cone(gr, x1,y->v(i,my),z0, x1,y->v(i,my),z->v(i,mz), 0.7*gr->BarWidth*d,0, cols); + else mgl_cone(gr, x1,y->v(i,my),z0, x1,y->v(i,my),z->v(i,mz), 0.7*gr->BarWidth*d,0, z->v(i,mz)<0?c1:c2); } } gr->EndGroup(); delete []dd; @@ -329,22 +345,24 @@ void mgl_ellipse(HMGL gr, float x1, float y1, float z1, float x2, float y2, floa const int n = 41; long pal=0,n0,n1=-1,n2,m1=-1,m2; gr->SetPenPal(stl,&pal); - float c=gr->NextColor(pal); + float c=gr->NextColor(pal), d; float k=(gr->GetNumPal(pal)>1)?gr->NextColor(pal):gr->AddTexture('k'); bool fill = !(stl && strchr(stl,'#')), box = (stl && strchr(stl,'@')) || !fill; if(!fill) k=c; gr->Reserve(2*n+1); - mglPoint p1(x1,y1,z1), p2(x2,y2,z2), v=p2-p1, u=mglPoint(0,0,1)^v, q=u^v, p, s; - u = (r/u.norm())*u; s = (p1+p2)/2.; v *=0.5+r/v.norm(); + mglPoint p1(x1,y1,z1), p2(x2,y2,z2), v=p2-p1; + d = v.norm(); + if(d==0) v = mglPoint(r); else v *= r/d; + mglPoint u=(mglPoint(0,0,1)^v)*sqrt(d*d/r/r+1), q=u^v, p, s=(p1+p2)/2.; // central point first - n0 = gr->AddPnt(p1,c,q,-1,3); + n0 = gr->AddPnt(p1,c,q,-1,11); for(long i=0;iStop) return; float t = i*2*M_PI/(n-1.); p = s+v*cos(t)+u*sin(t); - n2 = n1; n1 = gr->AddPnt(p,c,q,-1,3); + n2 = n1; n1 = gr->AddPnt(p,c,q,-1,11); m2 = m1; m1 = gr->CopyNtoC(n1,k); if(i>0) { @@ -366,10 +384,10 @@ void mgl_rhomb(HMGL gr, float x1, float y1, float z1, float x2, float y2, float gr->Reserve(8); mglPoint p1(x1,y1,z1), p2(x2,y2,z2), u=mglPoint(0,0,1)^(p1-p2), q=u^(p1-p2), p, s,qq; u = (r/u.norm())*u; s = (p1+p2)/2.; - p = p1; q = qq; n1 = gr->AddPnt(p,c,qq,-1,3); - p = s+u;q = qq; n2 = gr->AddPnt(p,b==c?c:k,qq,-1,3); - p = p2; q = qq; n3 = gr->AddPnt(p,b,qq,-1,3); - p = s-u;q = qq; n4 = gr->AddPnt(p,b==c?c:k,qq,-1,3); + p = p1; q = qq; n1 = gr->AddPnt(p,c,qq,-1,11); + p = s+u;q = qq; n2 = gr->AddPnt(p,b==c?c:k,qq,-1,11); + p = p2; q = qq; n3 = gr->AddPnt(p,b,qq,-1,11); + p = s-u;q = qq; n4 = gr->AddPnt(p,b==c?c:k,qq,-1,11); if(fill) gr->quad_plot(n1,n2,n4,n3); n1 = gr->CopyNtoC(n1,k); n2 = gr->CopyNtoC(n2,k); n3 = gr->CopyNtoC(n3,k); n4 = gr->CopyNtoC(n4,k); @@ -459,7 +477,7 @@ void mgl_dew_xy(HMGL gr, HCDT x, HCDT y, HCDT ax, HCDT ay, const char *sch, cons if(gr->MeshNum>1) { tx=(n-1)/(gr->MeshNum-1); ty=(m-1)/(gr->MeshNum-1); } if(tx<1) tx=1; if(ty<1) ty=1; - for(k=0;kGetNz();k++) for(j=0;jGetNz();k++) for(j=0;jv(i,j,k)*ax->v(i,j,k)+ay->v(i,j,k)*ay->v(i,j,k)); xm = xm>ym ? xm : ym; diff --git a/test.mgl b/test.mgl deleted file mode 100644 index 3ecee39..0000000 --- a/test.mgl +++ /dev/null @@ -1,7 +0,0 @@ -rotate 50 60 -box -fsurf 'x*y' -fsurf 'x^2' -fplot 't' 't' '1-t^2' 'r' - - diff --git a/texinfo/CMakeLists.txt b/texinfo/CMakeLists.txt index 2689808..0b7e5a5 100644 --- a/texinfo/CMakeLists.txt +++ b/texinfo/CMakeLists.txt @@ -4,7 +4,8 @@ if(MGL_HAVE_DOC) add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/texinfo/png/all.png - COMMAND LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/mgl ${CMAKE_BINARY_DIR}/examples/mgl_example +# COMMAND LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/mgl ${CMAKE_BINARY_DIR}/examples/mgl_example + COMMAND ${CMAKE_BINARY_DIR}/examples/mgl_example COMMAND touch ${CMAKE_SOURCE_DIR}/texinfo/png/all.png # MAIN_DEPENDENCY ${CMAKE_BINARY_DIR}/examples/mgl_example WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/texinfo/png @@ -12,37 +13,38 @@ if(MGL_HAVE_DOC) # set_source_files_properties(${CMAKE_BINARY_DIR}/examples/mgl_example PROPERTIES GENERATED 1) # ADD_CUSTOM_TARGET(gen_all_png DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/png/all.png) # ADD_DEPENDENCIES(gen_all_png mgl_example) - set(list_texi_files_en mathgl_en.texi mgl_en.texi overview_en.texi example_en.texi ex_mgl_en.texi parse_en.texi core_en.texi concept_en.texi widget_en.texi data_en.texi other_en.texi samples_en.texi appendix_en.texi fdl.texi) - set(list_texi_files_ru mathgl_ru.texi mgl_ru.texi overview_ru.texi example_ru.texi ex_mgl_ru.texi parse_ru.texi core_ru.texi concept_ru.texi widget_ru.texi data_ru.texi other_ru.texi samples_ru.texi appendix_ru.texi fdl.texi) + set(list_texi_files_en mathgl_en.texi mgl_en.texi overview_en.texi example_en.texi ex_mgl_en.texi parse_en.texi core_en.texi concept_en.texi widget_en.texi data_en.texi other_en.texi appendix_en.texi fdl.texi) + set(list_texi_files_ru mathgl_ru.texi mgl_ru.texi overview_ru.texi example_ru.texi ex_mgl_ru.texi parse_ru.texi core_ru.texi concept_ru.texi widget_ru.texi data_ru.texi other_ru.texi appendix_ru.texi fdl.texi) add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/texinfo/mathgl_en.info - COMMAND ${findth} --split=section mathgl_en.texi -o mathgl_en - COMMAND ${findth} --split=section mgl_en.texi -o mgl_en + COMMAND ${findth} -I=${CMAKE_SOURCE_DIR}/texinfo/png --split=section mathgl_en.texi -o mathgl_en + COMMAND ${findth} -I=${CMAKE_SOURCE_DIR}/texinfo/png --split=node --frames -o mgl_web_en mathgl_en.texi + COMMAND ${findth} -I=${CMAKE_SOURCE_DIR}/texinfo/png --split=no mgl_en.texi -o mgl_en.html COMMAND ${findmi} --no-validate mathgl_en.texi DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/png/all.png DEPENDS ${list_texi_files_en} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/texinfo ) add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/texinfo/mathgl_ru.info - COMMAND ${findth} --split=section mathgl_ru.texi -o mathgl_ru - COMMAND ${findth} --split=section mgl_ru.texi -o mgl_ru + COMMAND ${findth} -I=${CMAKE_SOURCE_DIR}/texinfo/png --split=section mathgl_ru.texi -o mathgl_ru + COMMAND ${findth} -I=${CMAKE_SOURCE_DIR}/texinfo/png --split=no mgl_ru.texi -o mgl_ru.html COMMAND ${findmi} --no-validate mathgl_ru.texi DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/png/all.png DEPENDS ${list_texi_files_ru} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/texinfo ) add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/texinfo/mathgl_en.pdf - COMMAND ${findtp} mathgl_en.texi - COMMAND ${findtp} mathgl_en.texi - COMMAND ${findtp} mathgl_en.texi + COMMAND ${findtp} -I ${CMAKE_SOURCE_DIR}/texinfo/png mathgl_en.texi + COMMAND ${findtp} -I ${CMAKE_SOURCE_DIR}/texinfo/png mathgl_en.texi + COMMAND ${findtp} -I ${CMAKE_SOURCE_DIR}/texinfo/png mathgl_en.texi DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/png/all.png DEPENDS ${list_texi_files_en} - DEPENDS ${list_texi_files_ru} +# DEPENDS ${list_texi_files_ru} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/texinfo ) add_custom_target(documentation ALL DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/mathgl_en.info -# DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/mathgl_en.pdf + DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/mathgl_en.pdf # DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/mathgl_ru.info # DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/mathgl_ru.pdf ) diff --git a/texinfo/classes.odg b/texinfo/classes.odg new file mode 100644 index 0000000..4d245d2 Binary files /dev/null and b/texinfo/classes.odg differ diff --git a/texinfo/classes.pdf b/texinfo/classes.pdf new file mode 100644 index 0000000..666ff9d Binary files /dev/null and b/texinfo/classes.pdf differ diff --git a/texinfo/classes.png b/texinfo/classes.png new file mode 100644 index 0000000..6976dfb Binary files /dev/null and b/texinfo/classes.png differ diff --git a/texinfo/concept_en.texi b/texinfo/concept_en.texi index fadd7c2..743e1ae 100644 --- a/texinfo/concept_en.texi +++ b/texinfo/concept_en.texi @@ -17,12 +17,11 @@ There are six most general (base) concepts: @item @strong{All plots are vector plots.} The MathGL library is intended for handling scientific data which have vector nature (lines, faces, matrices and so on). As a result, vector representation is used in all cases! In addition, the vector representation allows one to scale the plot easily -- change the canvas size by a factor of 2, and the picture will be proportionally scaled. @item -@strong{New drawing never clears things drawn already.} This, in some sense, unexpected, idea allows to create a lot of ``combined'' graphics. For example, to make a surface with contour lines one needs to call the function for surface plotting and the function for contour lines plotting (in any order). Thus the special functions for making this ``combined'' plots (as it is done in Matlab and some other plotting systems) are superfluous. Many more examples of such plots can be found in section @ref{Hints} and in home site (@uref{http://mathgl.sf.net/index.html}). +@strong{New drawing never clears things drawn already.} This, in some sense, unexpected, idea allows to create a lot of ``combined'' graphics. For example, to make a surface with contour lines one needs to call the function for surface plotting and the function for contour lines plotting (in any order). Thus the special functions for making this ``combined'' plots (as it is done in Matlab and some other plotting systems) are superfluous. @end enumerate In addition to the general concepts I want to comment on some non-trivial or less commonly used general ideas -- plot positioning, axis specification and curvilinear coordinates, styles for lines, text and color scheme. -@ifclear UDAV @menu * Coordinate axes:: * Color styles:: @@ -33,19 +32,6 @@ In addition to the general concepts I want to comment on some non-trivial or les * Command options:: * Interfaces:: @end menu -@end ifclear - -@ifset UDAV -@menu -* Coordinate axes:: -* Color styles:: -* Line styles:: -* Color scheme:: -* Font styles:: -* Textual formulas:: -* Command options:: -@end menu -@end ifset @c ------------------------------------------------------------------ @node Coordinate axes, Color styles, , General concepts @@ -83,7 +69,7 @@ You can also use ``bright'' colors. The ``bright'' color contain 2 symbols in br @cindex Mark style @cindex Arrows -The line style is defined by the string which may contain specifications for color (@samp{wkrgbcymhRGBCYMHWlenupqLENUPQ}), dashing style (@samp{-|;:ji=} or space), width (@samp{123456789}) and marks (@samp{*o+xsd.^v<>} and @samp{#} modifier). If one of the type of information is omitted then default values used with next color from palette (see @ref{Palette and colors}). +The line style is defined by the string which may contain specifications for color (@samp{wkrgbcymhRGBCYMHWlenupqLENUPQ}), dashing style (@samp{-|;:ji=} or space), width (@samp{123456789}) and marks (@samp{*o+xsd.^v<>} and @samp{#} modifier). If one of the type of information is omitted then default values used with next color from palette (see @ref{Palette and colors}). Note, that internal color counter will be nullified by any change of palette. This includes even hidden change (for example, by @code{Box()} or @code{Axis()} functions). @ifhtml @html By default palette contain following colors: dark grayH’, blueb’, greeng’, redr’, cyanc’, magentam’, yellowy’, grayh’, green-bluel’, sky-bluen’, orangeq’, green-yellowe’, blue-violetu’, purplep’. @@ -92,7 +78,7 @@ By default palette contain following colors: